Struts2 struts 2中的beans属性和模型驱动

Struts2 struts 2中的beans属性和模型驱动,struts2,Struts2,我是struts 2的新手。我创建了一个action类,该类使用ModelDriven接口将数据从JSP页面插入bean 问题是我在bean中有一些非“String属性,比如Long,Date`。。。等 问题是: 当我在jsp页面中按下submit按钮时,我得到一个错误,说它没有找到该特定属性的字符串设置器。 例如,如果我的豆子里有 当执行实现模型驱动的action类时,它会触发一个运行时异常 java.lang.NoSuchMethodException: com.hsms.as

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

问题是我在bean中有一些非“String
属性,比如
Long
Date`。。。等 问题是: 当我在jsp页面中按下submit按钮时,我得到一个错误,说它没有找到该特定属性的字符串设置器。 例如,如果我的豆子里有

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

    java.lang.NoSuchMethodException:  com.hsms.aseza.enteringApproval.EnteringApproval.setApprovalDate([Ljava.lang.String;)
在不为我的
Date
属性编写字符串设置器的情况下,是否仍然可以解决此问题

  • 确保已在action类中初始化bean

    Private YourBean bean = new YourBean();
    
    或者你可以把它放在构造函数中

  • 确保你的getter和setter是公开的

  • 如果您试图在jsp页面上键入
    date
    ,请使用
    datepicker
    例如
    sx:datetimepicker
    sj:datepicker

  • 尝试在jsp中使用标记。

    编辑:

    试用:

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

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

    我认为您的问题在于转换,即从字符串转换为
    java.util.Date
    对象。这扩展了负责从字符串转换为其他类型(如Long、Double等)的字符串。如果检查源代码,则不会看到
    java.util.Date
    java.sql.Date
    的任何转换。因此,我认为您应该为
    approvalDate
    编写一个转换器。我在此将指导您的程序,您所需要的只是编辑代码以满足您的需要

    在jsp上,遵循以下示例 使用与jsp中显示日期相同的格式,即日期格式,在转换器的
    convertFromString
    方法中进行转换,并返回转换后的
    java.util.date
    java.sql.date


    如果您在实现这一点时遇到问题,请告诉我。

    给出您的操作代码,Bean,JSP,您将得到答案。Quick.hi,这应该不是问题,您也可以使用
    s:property
    打印date@user1512999使用,其中objEnteringApproval是控制器中的公共可访问变量。s:date是用于输出的,当我使用modeldrivengeter和setter将日期从jsp映射到操作时会出现问题,对于datepicker,我使用的是textfeild+JS calendar。好吧,你所说的是我昨天发现的,为了更清楚地思考,如果我的月日大于12,隐式转换将失败。正如你所说的,解决方案是实现自定义转换器,我阅读了如何实现,但正如我所读到的,我必须为每个类制作一个转换器,现在的问题是如何制作全局转换器,换句话说,我想要一个转换器,而不仅仅是针对这个属性“approvalDate”,我想要一个转换器,它可以使用简单的日期格式转换为日期,只要它找到一个字符串,就可以转换为日期。如果我将月份天数大于12,那么它失败的原因是struts处理的隐式转换将基于我的本地系统日期格式进行转换。在我的本地系统中,格式是mm/dd/yyyy,因此正如您所说,我需要自定义转换器,但我需要全局格式。我不想在每个需要转换的地方复制转换器,为什么不把它放在全局位置,需要它的每一个动作都会引用它呢it@user1512999它为整个应用程序转换日期的每个实例。在
    xwork conversion.properties
    中配置
    java.util.Date
    后,它将适用于所有
    java.util.Date
    属性,无论该属性是在
    ModelDriven
    bean中还是在action类中。您不需要对
    java.util.Date
    的每个实例都这样做。莫雷索,请遵循我帖子中的例子。我想那会有帮助的。这样,您就不必在每个实例中都这样做。希望这更清楚。如果您有问题,请告诉我。查看此帖子了解如何使用它。
    <s:textfield key="objEnteringApproval.approvalDate"></s:textfield>