2

I have a JSP page displaying an object called docsFacebook. I need to pass this object to an action class in order to process its content. How to do it?

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>

In the same page I have a button with a link to an action class..

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

How to retrieve this data from that action class?

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

2 回答 2

1

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 结果是什么

于 2015-09-07T09:16:03.010 回答
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>

如果您单击链接Facebookdisplay则将调用操作类方法。

如果docsFacebook是类型,则在操作类中Risultato[]替换Risultato为。Risultato[]Display

于 2015-09-06T11:39:55.890 回答