struts中的bean属性和modelDriven 2

时间:2012-07-10 05:44:27

标签: struts2

我是struts 2的新手。我创建了一个动作类,它使用ModelDriven接口将数据从JSP页面插入到bean中。

问题是我有一些非'字符串properties in the bean like,日期`等等 问题是: 当我按下jsp页面中的提交按钮时,我得到一个错误,说它没有找到该特定属性的字符串设置器。 例如,如果我有我的豆   

   package com.hsms.aseza.enteringApproval

   Class EnteringApproval

       private Date approvalDate

      Date getApprovalDate()
      {
         return employeeId;
      }

     void setApprovalDate(Date employeeId)
     {
         this.employeeId = employeeId;
     }

package com.hsms.aseza.enteringApproval Class EnteringApproval private Date approvalDate Date getApprovalDate() { return employeeId; } void setApprovalDate(Date employeeId) { this.employeeId = employeeId; }

当执行实现模型驱动的动作类时,它会触发运行时异常

如果没有为我的 java.lang.NoSuchMethodException: com.hsms.aseza.enteringApproval.EnteringApproval.setApprovalDate([Ljava.lang.String;) 属性编写字符串setter,有没有解决这个问题?

3 个答案:

答案 0 :(得分:0)

  1. 确保您已在动作类中初始化了您的bean

    Private YourBean bean = new YourBean();
    

    或者你可以在构造函数

  2. 中使用它
  3. 确保您的getter和setter是公开的

  4. 如果您尝试在jsp页面上输入date,请使用datepicker,例如sx:datetimepickersj:datepicker

答案 1 :(得分:0)

尝试使用jsp中的s:date标记。

编辑:

尝试使用:

<s:textfield key="objEnteringApproval.approvalDate"></s:textfield>

其中objEnteringApproval是控制器中的公共可访问变量。

答案 2 :(得分:0)

我认为您的问题是转换,即从String转换为java.util.Date对象。此class扩展this,负责从String转换为其他类型,如Long,Double等。如果您检查DefaultTypeConverter的源代码,则不会看到任何转换java.util.Datejava.sql.Date。所以我认为你应该做的是为approvalDate编写一个转换器。我的previous post将指导您完成此过程,您只需编辑代码以满足您的需求。

在您的jsp上,请按照this datepicker示例操作 使用相同的格式,即使用SimpleDateFormat在jsp中显示日期的日期格式,使用转换器的convertFromString方法进行转换,并返回转换后的java.util.Datejava.sql.Date

如果您在实施此问题时遇到问题,请与我们联系。