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

Java 将对象从JSP传递到Struts 1.3中的操作类,java,jsp,hyperlink,struts,javabeans,Java,Jsp,Hyperlink,Struts,Javabeans,我想将一个对象从JSP传递到一个action类。怎么做?我对此一无所知。下面是我的一些示例代码: <tr class="alt"> <td><html:link href=""><bean:write name="EmpInfo" property="empId" /></html:link></td> <td><bean:write name="EmpInfo" property="emp

我想将一个对象从JSP传递到一个action类。怎么做?我对此一无所知。下面是我的一些示例代码:

<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>


在上面
标记中的代码中,我想将
empId
或对象
EmpInfo
传递给动作类。这里的
EmpInfo
是值对象,它包含所有的getter和setter

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

从操作类获取它。使用
html:param
标记,它可以在
html:link
标记的主体中使用

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

Struts的控制流程如下:

  • HttpRequest-apears
  • ActionServlet接收它,填充适当的ActionForm,并将控件传递给Action
  • 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,因此您可以将其转换器用于复杂类型。

    这是正确的工作代码。感谢@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>
    
    
    
    我使用了setAttribute()方法,即
    request.setAttribute(“EmpInfo”,empInfoVO)在action类中,然后我在这个jsp中传递了它。现在我想把这个对象从这个jsp传递到另一个action类。我该怎么做?使用session.setAttribute()方法。然后你可以在任何地方从你的应用程序中获得它。好的,我得到了它,但是除了在会话属性中创建它之外,没有办法从这个jsp传递到action类吗??如果有,请分享,我想知道……我是在扩展“MappingDispatchAction”,而不是
    ActionForm
    。那里的方法是
    public ActionForward viewDetailInfo(ActionMapping,ActionForm表单,HttpServletRequest请求,HttpServletResponse响应),抛出异常{return mapping.findForward(SUCCESS);}
    这很简单,我只是把它放到下一个jsp中,然后使用我在session属性中声明的bean对象。顺便问一下,请您详细解释一下从编码开始的最后一部分。。我无法获取它。上面的代码不起作用,尽管它没有显示任何错误,但表字段为空,即没有显示其中的任何值,也没有显示超链接。但有趣的是,当我在生成的html中查看源代码时,它显示了这样的内容:
    ,但我使用了bean消息,但它仍然没有displaying@sasuke您已经询问了如何通过链接传递对象,我不打算在这里编写工作代码,因为它是从你的问题中复制粘贴的,并且经过修改以反映这个答案的细节。我已经找到了答案@roman c。谢谢你的帮助,你做了大部分工作。我正在上传正确的ans。好的,如果它有帮助,很好,如果你觉得它有用,不管你使用什么url来调用该操作,那么你可以接受它。