【问题标题】:Pass a bean like a property of another bean (struts 1.x)像传递另一个 bean 的属性一样传递一个 bean (struts 1.x)
【发布时间】:2012-11-27 14:04:02
【问题描述】:

我有两个表单(以及相应的表单 bean),一个在 page1.jsp 上,另一个在 page2.jsp 上(第二个表单是通过 json 动态创建的)。 form1 是mypackage.MyActionForm1 类型,而form2 是mypackage.MyActionForm2 类型。在提交第一个表单时执行的 Action 中,我创建了一个 MyActionForm2 并将 MyActionForm1 表单设置为其属性:

MyActionForm2 secondBean = new MyActionForm2();
secondBean.setBeanProp(form1);
request.setAttribute("secondbean", secondBean);

在jsp中我成功访问了form1的属性:

${secondbean.beanProp.prop1}

但是当提交第二个表单form2 时,如何将第一个 bean 传递给执行的 Action?

form2.getBeanProp().getProp1() // form2.getBeanProp() gives a NullPointerException

我不会使用会话范围。

【问题讨论】:

    标签: forms javabeans struts-1


    【解决方案1】:

    如果您的form2.getBeanProp() bean 的每个属性都没有隐藏字段,那么显然 Struts 将无法凭空重建此 bean。

    为了能够填充actionForm.getBeanProp() 返回的bean 的属性prop1,您需要一个名为beanProp.prop1 的隐藏字段。如果您不想在 HTML 表单中将 beanProp 的整个状态作为隐藏字段,则将此 bean 存储在会话中。

    【讨论】:

    • 是使用会话范围bean(表单bean)的坏习惯(例如,在多页表单允许订购产品的情况下)?
    猜你喜欢
    • 2012-11-13
    • 2011-03-11
    • 2014-02-21
    • 2014-12-28
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多