簡體   English   中英

如何將參數從 JSP 傳遞到 Struts 2 操作

[英]How to pass a parameter from JSP to Struts 2 action

我有一個應用程序,我想在每次按下該項目的按鈕時將項目id傳遞給該操作。

我的 JSP :

<s:submit  value="addToCart" action="addToCart" type="submit">
<s:param name="id" value="%{#cpu.id}" />
</s:submit>

行動:

public class ProductsCPU extends BaseAction implements Preparable, SessionAware {
private static final long serialVersionUID = 2124421844550008773L;

private List colors = new ArrayList<>();
private List cpus;
private String id;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

當我將 id 打印到控制台時,它具有null值。 問題是什么?

您需要使用表單元素。

<form action="passId>
    <s:hidden name="id" value="%{#cpu.id}" />
    <s:submit  value="addToCart" action="addToCart" type="submit"/>
</form>

問題是你不能像在你的代碼中那樣使用s:param標簽參數化s:submit標簽,在submit標簽的主體中使用param標簽。

您也不希望添加hidden字段,因為您將多個值提交給操作。 這是因為許多隱藏字段以相同的名稱呈現。 你可以使用一個字段,提交表單之前更新它的值。

可能您使用了錯誤的標簽將參數傳遞給操作。 您可以使用錨標記並使用param標記對其進行param化。

第二種方式是使用javascript修改action屬性。 通過這種方式,您還可以使用button標簽。

不推薦第三種方式,因為它需要為每個鏈接使用多個表單。 通過這種方式,您可以直接向表單操作屬性添加參數。

以下是上述選項的代碼。

三合一:

<s:form name="myForm13" namespace="/" action="save?message=Hello param 3" theme="simple">
  <br/><s:a cssClass="btn btn-primary" action="test"><s:param name="message">Hello param 1</s:param>&nbsp;&nbsp;&nbsp;Go&nbsp;&nbsp;&nbsp;</s:a>
  <br/><s:a href="#" cssClass="btn btn-warning" onclick="myForm13.action='test?message=Hello param 2';myForm13.submit()">Submit</s:a>
  <br/><s:submit cssClass="btn btn-danger" action="test"/>    
</s:form>

這應該做:

<s:url id="myurl" action="addToCart">
    <s:param name="id" value="%{#cpu.id}" />
</s:url>
<s:submit  value="addToCart" action="%{myurl}"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM