技术开发 频道

JSF中文输入乱码问题解决方法

  【IT168 技术文档】该方法已知适用的版本tomact5.0.18,tomcat5.0.9。

  已知不适用的版本为tomcat5.0.28。

  问题描述:

  在inputtext中输入中文,然后在输出,显示为乱码。

  解决方法:

  1、自定义转器

  package util;   import java.util.Map;   import javax.faces.component.UIComponent;   import javax.faces.convert.Converter;   import javax.faces.context.FacesContext;   import javax.faces.convert.ConverterException;   public class StringConverter implements Converter {   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, "GB2312");   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;   }   }

  2、注册转换器

  faces-config.xml片段

<converter> <converter-id>util.stringconverter</converter-id> <converter-class>util.StringConverter</converter-class> </converter>

  3、在页面使用转换器

<h:inputText id="account" value="#{util.account}" required="true" styleClass="input" > <f:converter converterId="utilstringconverter"/>
0
相关文章