我有一个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>
答案 0 :(得分:1)
由于您正在阅读数组,因此您需要在源操作中使用数组getter :
public Risultato[] getDocsFacebook(){...}
然后在页面中选择单个元素,因此在目标操作中需要对象设置器:
public void setDocsFacebook(Risultato risultato){...}
要发送对象,您有两个问题:
打印的属性不是表单元素,而是纯文本;然后,您需要使用隐藏字段为其中的每个人发送值:
<s:property value="foo" />
<s:hidden name="foo" />
<s:textfield name="bar" />
要从迭代集合中发送单个对象,您需要使用OGNL指定索引。 整篇文章描述得很好in this answer ,请务必仔细阅读。
您的(非常意大利语本地化)日志告诉您,由于存在某种转换或验证错误,因此会返回INPUT结果。
INPUT与ERROR不同,因为它表示用户插入的数据中存在可恢复的错误,它应该要求用户再次输入它们,而不是例如登陆到错误页面。
我强烈建议您阅读what the INPUT result is。
答案 1 :(得分:0)
在variablename
动作类中创建docsFacebook
(某些属性以保存Display
值)属性,并为其编写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[]
,请将Risultato
替换为Risultato[]
操作类中的Display
。