[英]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>
由于您正在读取数组,因此在源操作中需要一个数组 getter :
public Risultato[] getDocsFacebook(){...}
然后在页面中选择单个元素,因此在目标操作中需要一个对象设置器:
public void setDocsFacebook(Risultato risultato){...}
要发送对象,您有两个问题:
打印出来的属性不是表单元素,而是纯文本; 然后您需要为每个人使用一个隐藏字段来发送值:
<s:property value="foo" /> <s:hidden name="foo" /> <s:textfield name="bar" />
要从迭代集合中发送单个对象,您需要使用 OGNL 指定索引。 整个事情在这个答案中得到了很好的描述,请务必阅读全部内容。
您的(非常意大利化的)日志告诉您,由于存在某种转换或验证错误,因此会返回 INPUT 结果。
INPUT 与 ERROR 不同,因为它表示用户插入的数据中存在可恢复的错误,它应该要求用户再次输入它们,而不是例如跳转到错误页面。
我强烈建议您阅读INPUT 结果是什么。
在Display
操作类中创建一个variablename
(一些属性来保存docsFacebook
值)属性,并向其写入 setter 和 getter 方法。
如果docsFacebook
是Risultato
类型,那么
在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
操作类方法。
如果docsFacebook
是Risultato[]
类型,则在Display
action 类中用Risultato[]
替换Risultato
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.