提问人:Andrei G 提问时间:1/7/2012 最后编辑:Roman CAndrei G 更新时间:1/29/2022 访问量:30072
如何将参数从 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
答:
1赞
coding_idiot
1/7/2012
#1
这应该做:
<s:url id="myurl" action="addToCart">
<s:param name="id" value="%{#cpu.id}" />
</s:url>
<s:submit value="addToCart" action="%{myurl}"/>
1赞
xrcwrn
8/11/2014
#2
您需要使用 form 元素。
<form action="passId>
<s:hidden name="id" value="%{#cpu.id}" />
<s:submit value="addToCart" action="addToCart" type="submit"/>
</form>
1赞
Roman C
12/18/2016
#3
问题在于,您不能像在代码中使用 submit 标签正文中的 param 标签一样,使用 tag 对 <s:submit>
标签进行参数化。<s:param>
您也不想添加字段,因为您已将多个值提交到操作中。这是因为许多隐藏字段都以相同的名称呈现。在提交表单之前,您只能使用一个字段并更新其值。<hidden>
您可能使用了错误的标记将参数传递给操作。您可以使用锚标记并使用标记对其进行参数化。<s: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>
评论
0赞
Roman C
1/3/2017
参数是 3 合 1 传递的,但还有另一个参数,您应该自己找到它。
评论
<s:hidden name="id" value="%{#cpu.id}" />
<s:submit value="addToCart" action="addToCart" type="submit"> <s:hidden name="val1" value="1"></s:hidden> </s:submit>