struts form中的空字符串有关问题
struts form中的空字符串问题
struts form定义的字段数比表单中提交的字段多的时候.那么多余的字段就会有空字符串的问题.
具体如下:以下表单中只有一个name,而form中定义了name,age,pwd
那么我们比较在返回的文件blankResult.jsp中使用jsp和el表达式取得值的不同..
配置:
<form-bean name="blankForm" type="com.lwf.struts.form.BlankForm"></form-bean> <action path="/blankAction" type="com.lwf.struts.action.BlankAction" name="blankForm" > <forward name="success" path="/blankResult.jsp"></forward> </action>
blank.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="blankAction.do" method="post"> name:<input type="text" name="name"/> <input type="submit" value="submit"></input> </form> </body> </html>
blankForm.java
package com.lwf.struts.form; import org.apache.struts.action.ActionForm; public class BlankForm extends ActionForm { private String name; private String pwd; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
BlankAction.java
package com.lwf.struts.action; import 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.lwf.struts.form.BlankForm; public class BlankAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return mapping.findForward("success"); } }
上面过程中没有做任何处理..
但我们知道struts源码中会自动将BlankForm设置到request或session中去.
blankResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.lwf.struts.*,com.lwf.struts.form.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% BlankForm blankForm = (BlankForm)session.getAttribute("blankForm"); %> jsp:<br> name:<%=blankForm.getName()%><br> pwd:<%=blankForm.getPwd()%><br> age:<%=blankForm.getAge()%><br> el:<br> name:${blankForm.name }<br> pwd:${blankForm.pwd }<br> age:${blankForm.age }<br> </body> </html>
显示结果为:
jsp: name: pwd:null age:0 el: name: pwd: age:0
可以看到使用EL的时候会自动将null转换为""...