[英]How to pass a parameter from JSP to Struts 2 action
我有一個應用程序,我想在每次按下該項目的按鈕時將項目id
傳遞給該操作。
<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> Go </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.