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转换为""...