繁体   English   中英

如何将jsp页面[s:iterator]内的对象传递给动作类?

[英]How to pass an object inside a jsp page [s:iterator] to an action class?

我有一个 JSP 页面,显示一个名为docsFacebook的对象。 我需要将此对象传递给操作类以处理其内容。 怎么做?

JSP

<s:iterator value="docsFacebook">
    <p>
       <img src="images/fb.png" />
       <b><s:property value="Newspaper"/></b>       
       <s:property value="Date"/></p>               
       <p><s:property value="Message"/></p>              
       <p><a href=<s:property value="Link_url"/>>
       <s:property value="Link_url"/></a>
    </p>
    <br></br>           
</s:iterator>

在同一页面中,我有一个按钮,其中包含指向操作类的链接。

<a href="<s:url action="display" />">Facebook</a>

如何从该操作类中检索此数据?

struts.xml

<struts>
    <package name="default" extends="struts-default">
        <action name="doFirstQuery" class="action.FirstQuery">
            <result name="success">success.jsp</result>
            <result name="failure">error.jsp</result>               
        </action>
        <action name="doFollowingQuery" class="action.FollowingQuery">
            <result name="success">success.jsp</result>                         
        </action> 
        <action name="display" class="action.Display">
            <result name="success">dis.jsp</result>                         
        </action>           
    </package>
</struts> 

1 - 适当的访问器/修改器:

由于您正在读取数组,因此在源操作中需要一个数组 getter

public Risultato[] getDocsFacebook(){...}

然后在页面中选择单个元素,因此在目标操作中需要一个对象设置器

public void setDocsFacebook(Risultato risultato){...}

2 - 发送对象:

要发送对象,您有两个问题:

  • 打印出来的属性不是表单元素,而是纯文本; 然后您需要为每个人使用一个隐藏字段来发送值:

     <s:property value="foo" /> <s:hidden name="foo" /> <s:textfield name="bar" />
  • 要从迭代集合中发送单个对象,您需要使用 OGNL 指定索引。 整个事情在这个答案中得到了很好的描述,请务必阅读全部内容。

3 - 输入结果

您的(非常意大利化的)日志告诉您,由于存在某种转换或验证错误,因此会返回 INPUT 结果。

INPUT 与 ERROR 不同,因为它表示用户插入的数据中存在可恢复的错误,它应该要求用户再次输入它们,而不是例如跳转到错误页面。

我强烈建议您阅读INPUT 结果是什么

Display操作类中创建一个variablename (一些属性来保存docsFacebook值)属性,并向其写入 setter 和 getter 方法。

如果docsFacebookRisultato类型,那么

Dsiaply操作类中

private Risultato variablename;

public Risultato setVariablename(Risultato variablename)
{
     ............
}
public Risultato getVariablename()
{
     .............
}

现在在JSP调用动作类方法

 <a href='display?variablename=<s:property value="docsFacebook"/>'>Facebook</a>

如果您单击Facebook链接,将调用display操作类方法。

如果docsFacebookRisultato[]类型,则在Display action 类中用Risultato[]替换Risultato

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM