• jsf初学解决faces 中文输入乱码问题


    中文乱码,貌似在java里很常见,请看简单代码:

    很简单的faces

    <div class="td-block">
                            <h:outputLabel class="first-td fl">测试取值:</h:outputLabel> 
                            <h:inputText value="#{summary.title}"  >
                               
                            </h:inputText>
    </div>
    
     <h:commandButton value="查询" class="btn-12" action="#{summary.search()}">
    </h:commandButton>

    bean

    private String title;
        
        public String search()
        {
            if(i==2)
            {
                return "ok";
            }
            if(title.equals("一本书"))
            return "ok";
            else{
                return "false";
            }
            
        }
    
        /**
         * @return the title
         */
        public String getTitle() {
            return  title;
        }
    
        /**
         * @param title the title to set
         */
        public void setTitle(String title) {
            
            this.title = title;
        }

    当输入中文 在获取输入值时始终是乱码,各种解决不行。。

    后来看到一篇文章(具体文章不记得)使用转换器。

    在看使用转换器具体实现:

    package com.cnpdx;
    
    import java.io.UnsupportedEncodingException;
    import javax.faces.component.UIComponent;
    import javax.faces.component.UIInput;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.Converter;
    import javax.faces.convert.ConverterException;
    
    /**
     *
     * @author taoxy
     */
    public class StringConverter implements Converter{
    
        /**
         *
         * @param context
         * @param component
         * @param newValues
         * @return
         * @throws ConverterException
         */
        @Override
       public Object getAsObject(FacesContext context, UIComponent component,String newValues) throws ConverterException {
            String newstr = "";
            if (newValues == null) {
                    newValues = "";
              }
              byte[] byte1 = null;
              try {
               byte1 = newValues.getBytes("ISO-8859-1");
               newstr = new String(byte1, "UTF-8");
               UIInput input=(UIInput)component;//
               input.setSubmittedValue(newstr);
              } catch (UnsupportedEncodingException e) {
               e.printStackTrace();
              }
    
              return newstr;
    
     }
    
     public String getAsString(FacesContext context, UIComponent component,
       Object Values) throws ConverterException { 
      return (String) Values;
     }
        
    }
    View Code

    配置一下faces-config

    <converter>
            <converter-id>com.cnpdx.stringconverter</converter-id>
            <converter-class>com.cnpdx.StringConverter</converter-class>
        </converter>
    View Code

    最后修改下faces

    修改如下:

    <div class="td-block">
                            <h:outputLabel class="first-td fl">测试取值:</h:outputLabel> 
                            <h:inputText value="#{summary.title}"  >
                                <f:converter converterId="com.cnpdx.stringconverter"></f:converter>
                            </h:inputText>
                        </div>
    View Code

    OK 中文乱码问题算是解决了

  • 相关阅读:
    Jmeter性能监测及安装插件(推荐)
    测试用例使用传统excel还是思维导图(Xmind、MindManager等)?
    测试用例设计
    一个资深测试员的感悟
    log4j教程 10、PatternLayout
    log4j教程 9、HTMLLayout
    log4j教程 8、日志格式化
    log4j教程 7、日志记录级别
    log4j教程 6、Logger方法
    log4j教程 5、示例程序
  • 原文地址:https://www.cnblogs.com/xxtkong/p/3501944.html
Copyright © 2020-2023  润新知