`

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

分享到:
评论

相关推荐

    Struts2的常量详解

    struts.multipart.parser 属性指定处理 multipart/form-data 的 MIME 类型(文件上传)请求的框架,该属性支持 cos、pell 和 jakarta 等属性值,即分别对应使用 cos 的文件上传框架、pell 上传及 common-fileupload ...

    struts的form不能初始化java.util.Date类型

    然而,有一个常见的问题出现在尝试初始化`java.util.Date`类型的字段时,即“Struts的form不能初始化java.util.Date类型”。这个问题通常是由于日期对象的序列化和反序列化机制导致的,以及Struts默认的数据绑定策略...

    Struts2.0解决中文乱码

    这里使用了`getBytes("ISO-8859-1")`将字符串转换为字节数组,然后再用`new String(byte[], "utf-8")`将字节数组转换回字符串,同时指定了正确的编码。 ### 结论 在Struts2.0框架中,解决中文乱码的关键在于正确...

    struts 中文乱码问题解决

    如果使用的是数据库存储中文数据,确保数据库连接字符串中包含了正确的字符集参数,如`?useUnicode=true&characterEncoding=UTF8`。 ### 总结 Struts框架中的中文乱码问题虽然常见,但通过上述方法可以有效解决。...

    struts2生成中文验证码的Action

    5. **存入Session**: 生成的验证码图像和其对应的文本字符串需要存入用户的session,以便后续验证时使用。同时,也可以设置一个过期时间,避免长时间未使用的验证码被重复使用。 6. **处理验证请求**: 当用户输入...

    JSP Struts的HTML标签库详解

    - `&lt;html:errors&gt;`:这个标签用于显示ActionErrors,即Struts框架中的错误信息。它可以自动查找并显示请求中与ActionErrors相关的消息。 使用Struts的HTML标签库,开发者可以避免在JSP页面中过多地使用脚本语言,...

    JS调用Struts中的Action

    ### JS调用Struts中的Action #### 背景与概念 在Web开发中,JavaScript(简称JS)作为客户端脚本语言,常被用来增强用户体验、处理表单验证等前端任务。而Struts框架则是Java Web开发中常用的一个MVC(Model-View-...

    Struts2实例 国际化 类型转换 struts标签

    例如,用户输入的字符串可以自动转换为整数或日期。如果Struts2内置的转换器无法满足需求,开发者还可以自定义转换器。 Struts2标签库是其强大的视图层工具,简化了JSP页面的编写。例如: 1. `&lt;s:form&gt;`:创建表单...

    struts2.0的特点

    当Action执行完毕后,返回一个字符串,这个字符串将决定页面的流转方向,比如“input”可能指向输入表单页面,“success”则指向成功的处理结果页面。 Struts2.0采用了拦截器(Interceptor)机制,这是一种非常强大...

    Struts如何解决中文添加到数据库

    在资源文件(如message.properties或message_zh_CN.properties)中,使用UTF-8编码存储中文字符串,并在页面中通过`&lt;fmt:message&gt;`标签显示。 7. **异常处理** - 在处理中文数据过程中,可能出现的乱码问题通常会...

    Struts2框架及注释和用法

    在`execute()`中编写业务逻辑,返回一个表示结果的字符串,与视图进行交互。 **3. 注释使用** Struts2允许在Action类和Action方法上使用注解,简化配置。例如,`@Action(value="login")`用于指定Action的名称,`@...

    第一个Struts程序和仿Struts(登入问题)

    4. 避免直接返回Action的字符串结果:这可能导致恶意用户控制返回的视图,应使用常量或者ActionForward。 5. 使用拦截器:Struts2提供了一系列拦截器,如Params拦截器可以自动进行参数绑定和验证。 6. 开启Struts2...

    struts标签中文

    通过研究这些示例,你可以看到如何配置Action、Result和Form Bean,以及如何在JSP页面中使用Struts标签来展示和处理中文数据。这些实例有助于加深对Struts标签中文支持的理解。 5. **常见问题及解决方案** - **...

    struts2 知识点

    处理完成后,Action返回一个结果字符串,这个字符串会被用来查找`struts.xml`中的`&lt;result&gt;`元素,最终决定渲染哪个视图(View)。 #### 五、Struts2的优点 - **灵活性**:Struts2提供了丰富的配置选项,允许...

    struts 2.3.4.1 jar

    5. **Apache Commons Lang3** (`commons-lang3-3.1.jar`): 这个库提供了大量的Java语言工具类,增强了标准库的功能,例如字符串处理、日期/时间操作等,对开发高效代码非常有帮助。 6. **OGNL (Object-Graph ...

    javaweb Struts2 框架搭建方法与空框架模型

    - 创建一个新的Java类,实现`com.opensymphony.xwork2.Action`接口或继承`ActionSupport`类,定义业务逻辑方法,通常返回字符串结果,对应视图页面。 4. **配置Action** - 在`struts.xml`中为Action类添加配置,...

    我的笔记:Struts构架中action的跳转大全

    如果方法成功执行,则根据返回的字符串决定跳转到哪个页面。例如,如果返回`"successful"`,则跳转到`/success.jsp`;如果返回`"failed"`,则跳转到`/error.jsp`。 ### 2. Form-only Action Form-only Action主要...

    Struts2中的参数传递

    2. **类型转换**:为了确保传入的字符串能够正确地转换为所需的Java对象类型,Struts2提供了内置的类型转换器,并允许用户自定义类型转换逻辑。这一步骤对于确保应用程序的安全性和数据完整性至关重要。 接下来,...

    struts2 使用范例

    这些方法处理完业务逻辑后,会返回一个结果字符串,该字符串定义了接下来要显示的视图页面。 对于视图层,Struts2支持JSP、FreeMarker等多种模板技术。在JSP中,我们可以使用Struts2的标签库,如`s:form`、`s:...

Global site tag (gtag.js) - Google Analytics