2

我想将一个对象从 JSP 传递给一个动作类。怎么做?我对此一无所知。我的一些示例代码在这里:

<tr class="alt">
    <td><html:link href=""><bean:write name="EmpInfo" property="empId" /></html:link></td>
    <td><bean:write name="EmpInfo" property="empName" /></td>
    <td><bean:write name="EmpInfo" property="empAddress" /></td>
    <td><bean:write name="EmpInfo" property="empPhNumber" /></td>
    <td><bean:write name="EmpInfo" property="empEmailId" /></td>
    <td><bean:write name="EmpInfo" property="empLocName" /></td>
    <td><bean:write name="EmpInfo" property="empCountryName" /></td>
    <td><bean:write name="EmpInfo" property="empDob" /></td>
    <td><html:link href=""><bean:message key="view.single.emp.update"/></html:link></td>
</tr>

在标签中的上述代码中,<html:link href="">我想将empId或对象传递EmpInfo给动作类。这EmpInfo是值对象,它包含所有的 getter 和 setter。

4

4 回答 4

1

Struts的控制流程是这样的:

  1. 出现一个 HttpRequest
  2. ActionServlet 接收它,填充适当的 ActionForm,并将控制权传递给 Action
  3. Action 执行逻辑,并转发或重定向到 ActionForward

因此,如果您转发到 JSP,那么您将不会再次直接将控制权传递给另一个动作,而是在发送来自用户浏览器的新请求后调用下一个动作。

因此,传递对象的唯一方法是将其属性作为请求参数传递(首选 GET 或 POST)。

顺便说一句,使用 Struts 1.2+,您不会被迫在 ActionForm 中只有字符串字段。使用 Java Beans 约定让您的对象以行动形式引用它:

class MyActionForm extends ActionForm {
    private MyBean myBean;

    public MyBean getMyBean() {
        if (myBean == null) {
            myBean = new MyBean();
        }
        return myBean;
    }
}

现在,您可以在 JSP 标记中使用myBean.property1访问其属性,并且名称为 myBean.property1 的请求参数将填充到该属性中。

Struts 1.2+ 在内部使用 Apache Commons BeanUtils,因此您可以将其转换器用于复杂类型。

于 2013-09-01T16:43:56.020 回答
0

这是正确的工作代码。感谢@roman c 帮助我

 <td>
                <html:link href="viewDetailInfo.do">
                    <html:param name="empId">
                        <bean:write name="empList" property="empId" />
                    </html:param>
                        <bean:write name="empList" property="empId" />
                </html:link>
 </td>
于 2013-09-02T13:46:19.497 回答
0

通过方法将您的对象添加到会话或请求对象setAttribute()。您可以通过getAttribute().

于 2013-09-01T14:46:14.097 回答
0

使用html:param标签,可以在html:link标签正文中使用

<html:link href=""><html:param name="empId"><bean:write name="EmpInfo" property="empId" /></html:param></html:link>
于 2013-09-01T16:08:35.730 回答