标签的应用比较复杂

今天在社区看到有人提问,恰巧我也遇到同类问题:

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:



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 的话

如果用 标记,就没有这个问题

可惜在任何材料查不到标记库对路径的转换功能,只能够看源代码学习

 

刚好查到:

的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.这些属性也可以使用 标记属性进行显示的定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值