将对象从JSP传递到Struts 1.3中的操作类

时间:2013-09-01 14:39:19

标签: java jsp hyperlink struts javabeans

我想将一个对象从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 个答案:

答案 0 :(得分:1)

Struts的控制流程如下:

  1. HttpRequest apears
  2. ActionServlet接收它,填充正确的ActionForm,并将控件传递给Action
  3. Action执行逻辑,转发或重定向到ActionForward
  4. 因此,如果您转发到JSP,则不会直接将控件再次传递给另一个操作,但是在发送来自用户浏览器的新请求后会调用下一个操作。

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

    顺便使用Struts 1.2+,你不必在ActionForm中只拥有String字段。让你的对象在行动中用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,因此您可以将其转换器用于复杂类型。

答案 1 :(得分:0)

通过setAttribute()方法将对象添加到会话或请求对象。您可以通过getAttribute()从动作类中获取它。

答案 2 :(得分:0)

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

<html:link href=""><html:param name="empId"><bean:write name="EmpInfo" property="empId" /></html:param></html:link>

答案 3 :(得分: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>