读书人

解决思路

发布时间: 2012-02-01 16:58:19 作者: rapoo


JSP:
<%@ page language= "java " pageEncoding= "BIG5 "%>
<%@ taglib uri= "http://struts.apache.org/tags-bean " prefix= "bean "%>
<%@ taglib uri= "http://struts.apache.org/tags-html " prefix= "html "%>
<%@ taglib uri= "http://java.sun.com/jsp/jstl/core " prefix= "c "%>

<html>
<head>
<title> JSP for InputForm form </title>
</head>
<body>
<html:form action= "/input ">
data : <html:text property= "data "/> <html:errors property= "data "/> <br/>
<html:submit/> <html:cancel/>
</html:form>
<c:out value= "${data} "/>
</body>
</html>
FromBean:

package com.pan.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

/**
* MyEclipse Struts
* Creation date: 09-14-2007
*
* XDoclet definition:
* @struts.form name= "input "
*/
public class InputForm extends ActionForm {
/*
* Generated fields
*/

/** data property */
private String data;

/*
* Generated Methods
*/

/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}

/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}

/**
* Returns the data.
* @return String
*/
public String getData() {
return data;
}

/**
* Set the data.
* @param data The data to set
*/
public void setData(String data) {
this.data = data;
}
}

Action:
mport javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.pan.struts.form.InputForm;

/**
* MyEclipse Struts
* Creation date: 09-14-2007


*
* XDoclet definition:
* @struts.action path= "/input " name= "inputForm " input= "/form/input.jsp " scope= "request " validate= "true "
*/
public class InputAction extends Action {
/*
* Generated Methods
*/

/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
InputForm input = (InputForm) form;// TODO Auto-generated method stub

String data = input.getData();

request.setAttribute( "data ",data);

return mapping.findForward( "forward ");
}
}

我在JSP的文本框入中文,繁中文,提交求后示都是,高手理!


[解决办法]
你又没有进行编码处理,建议采用 POST 请求提交表单,这样比较好解决。

在 Action 中需要转码

String data = new String(input.getData().getBytes( "iso-8859-1 "), "big5 ");

建议配置一个过滤器,否则的话比较麻烦。

若是采用缺省的 GET 请求的话,需要改 URI 编码(改 Tomcat 的 server.xml)、提交时的字符编码,还且在接收参数时还要解码,挺烦的。

读书人网 >Java Web开发

热点推荐