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