标签的应用比较复杂
2004-07-17 20:04
429 查看
今天在社区看到有人提问,恰巧我也遇到同类问题:
jsp 文件:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
exAction.java :
package web;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class exAction extends Action {
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
exActionForm exActionForm_1 = (exActionForm) actionForm;
if(exActionForm_1!=null)
{
String test = exActionForm_1.getTest();
httpServletRequest.setAttribute("test",test);
}
else
httpServletRequest.setAttribute("test","fail");
return (actionMapping.findForward("success"));
}
}
exActionForm.java:
package web;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class exActionForm extends ActionForm {
public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
return null;
}
private String test;
public String getTest()
{
return this.test;
}
public void setTest(String test)
{
this.test=test;
}
public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
}
}
struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?> http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
----------------------------------------------------------
为什么 我没的到 exActionForm 对象??,exActionForm_1 总是为 null 啊???
答复如下:
很简单,跟我的错误一样的
大量的struts书误人,很容易导致初学者出现这个问题
注意 jsp 中的 form action="exAction.do"
应为 ="/exaction/exAction.do" ,如果你的应用目录是exaction 的话
如果用 <?xml:namespace prefix = html />标记,就没有这个问题
可惜在任何材料查不到标记库对路径的转换功能,只能够看源代码学习
刚好查到:
的action应用比较复杂:
表单标记
标记用来显示HTML标记,可以指定AcitonForm bean的名称和它的类名。如果没有设置这些属性,就需要有配置文件来指定ActionMapping以表明当前输入的是哪个JSP页,以及从映射中检索的bean名和类。如果在ActionMapping指定的作用域中没有找到指定的名称,就会创建并存储一个新的bean,否则将使用找到的bean。
标记能够包含与各种HTML输入字段相对应的子标记。
标记属性如下:
属性描述Action 与表单相关的操作。在配置中,这个操作也用来标识与表单相关的ActionForm bean Enctype 表单HTTP方法的编码类型Focus 表单中需要初始化焦点的字段Method 表单使用的HTTP方法Name 与表单相关的ActionForm bean的名称。如果没有设置这个属性,bean的名称将会从配置信息中获得Onreset 表单复位时的JavaScript事件句柄Onsubmit 表单提交时的JavaScript事件句柄Scope 搜索ActionForm bean的范围。如果没有设置,将从配置文件中获取Style 使用的格式styleClass 这个元素的格式表类Type ActionForm bean的完整名称。如果没有设置,将从配置文件获得
例如:
与表单相关的操作路径是validateEmployee,而表单数据是通过POST传递的。对于这个表单来说,ActionForm bean的其他信息,如bean名称类型,作用域,都是从表单指定操作的ActionMapping中检索得到的:
21
type=”com.example.ValidateExampleAction”
name=”empForm”
scope=”request”
input=”/employeeInput.jsp”>
如果配置文件中包含上述信息,并且请求URI的*.do被映射到ActionServlet,与表单相关的ActionForm bean的名称,类型和作用域分别是empForm,com.example.EmployeeForm和request.这些属性也可以使用标记属性进行显示的定义。
jsp 文件:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
exAction.java :
package web;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class exAction extends Action {
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
exActionForm exActionForm_1 = (exActionForm) actionForm;
if(exActionForm_1!=null)
{
String test = exActionForm_1.getTest();
httpServletRequest.setAttribute("test",test);
}
else
httpServletRequest.setAttribute("test","fail");
return (actionMapping.findForward("success"));
}
}
exActionForm.java:
package web;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class exActionForm extends ActionForm {
public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
return null;
}
private String test;
public String getTest()
{
return this.test;
}
public void setTest(String test)
{
this.test=test;
}
public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
}
}
struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?> http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
----------------------------------------------------------
为什么 我没的到 exActionForm 对象??,exActionForm_1 总是为 null 啊???
答复如下:
很简单,跟我的错误一样的
大量的struts书误人,很容易导致初学者出现这个问题
注意 jsp 中的 form action="exAction.do"
应为 ="/exaction/exAction.do" ,如果你的应用目录是exaction 的话
如果用 <?xml:namespace prefix = html />标记,就没有这个问题
可惜在任何材料查不到标记库对路径的转换功能,只能够看源代码学习
刚好查到:
的action应用比较复杂:
表单标记
标记用来显示HTML标记,可以指定AcitonForm bean的名称和它的类名。如果没有设置这些属性,就需要有配置文件来指定ActionMapping以表明当前输入的是哪个JSP页,以及从映射中检索的bean名和类。如果在ActionMapping指定的作用域中没有找到指定的名称,就会创建并存储一个新的bean,否则将使用找到的bean。
标记能够包含与各种HTML输入字段相对应的子标记。
标记属性如下:
属性描述Action 与表单相关的操作。在配置中,这个操作也用来标识与表单相关的ActionForm bean Enctype 表单HTTP方法的编码类型Focus 表单中需要初始化焦点的字段Method 表单使用的HTTP方法Name 与表单相关的ActionForm bean的名称。如果没有设置这个属性,bean的名称将会从配置信息中获得Onreset 表单复位时的JavaScript事件句柄Onsubmit 表单提交时的JavaScript事件句柄Scope 搜索ActionForm bean的范围。如果没有设置,将从配置文件中获取Style 使用的格式styleClass 这个元素的格式表类Type ActionForm bean的完整名称。如果没有设置,将从配置文件获得
例如:
与表单相关的操作路径是validateEmployee,而表单数据是通过POST传递的。对于这个表单来说,ActionForm bean的其他信息,如bean名称类型,作用域,都是从表单指定操作的ActionMapping中检索得到的:
21
type=”com.example.ValidateExampleAction”
name=”empForm”
scope=”request”
input=”/employeeInput.jsp”>
如果配置文件中包含上述信息,并且请求URI的*.do被映射到ActionServlet,与表单相关的ActionForm bean的名称,类型和作用域分别是empForm,com.example.EmployeeForm和request.这些属性也可以使用标记属性进行显示的定义。
相关文章推荐
- Struts2 <s:lterator>标签的一个复杂应用 解析
- xml java应用(DOM、SAX、JDOM、DOM4j)简介比较
- awt简单应用二 标签Label
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-复杂业务的实现(商品入库)-附案例操作视频
- [备忘] HTML5中离线应用(AppCache)的一个比较意外的行为
- 比较复杂的导出Excel(1)!!!!!!!!!!
- Sybase(sqlanywhere)比较应用版本大小数据库存储过程
- jstl标签 c:if数值一位数和两位数的比较
- MLP、RBF、SVM网络比较及其应用前景
- web服务器和应用服务器概念比较
- Struts2中checkboxlist标签——应用、实现换行
- HTML5之新增标签用途及应用场景
- 几种常用HTML5移动应用框架的比较
- Windows Mobile 应用开发比较经典的几个网站与博客
- Quartz和Spring Task定时任务的简单应用和比较
- 常用XHTML+Css布局的标签应用
- Thinkphp模板标签if和eq的区别和比较实例分析
- About memset应用、memcpy和strcpy比较
- 静态IP地址与动态IP地址的比较和应用
- tp5中行为标签位的应用