我有一个应用程序,每次按下该项目的按钮时,我都希望将项目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
值。有什么问题?
答案 0 :(得分:0)
这应该做:
<s:url id="myurl" action="addToCart">
<s:param name="id" value="%{#cpu.id}" />
</s:url>
<s:submit value="addToCart" action="%{myurl}"/>
答案 1 :(得分:0)
您需要使用表单元素。
<form action="passId>
<s:hidden name="id" value="%{#cpu.id}" />
<s:submit value="addToCart" action="addToCart" type="submit"/>
</form>
答案 2 :(得分:0)
问题在于,您可以使用s:submit
代码中的s:param
代码,使用param
代码中的submit
标记来hidden
代码标记param
代码。< / p>
您也不想添加action
字段,因为您有多个值已提交给操作。这是因为许多隐藏字段都使用相同的名称进行渲染。您可以在提交表单之前使用仅一个字段并更新其值。
可能您使用了错误的标记将参数传递给操作。您可以使用锚标记并使用button
标记对其进行参数化。
第二种方法是使用javascript修改<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>
属性。通过这种方式,您还可以使用firebase.onAuthStateChanged(function(user){
if(!user){
this.events.publish("event:loggedOut");
}
});
标记。
不推荐使用第三种方式,因为它需要为每个链接使用多个表单。通过这种方式,您可以直接向表单操作属性添加参数。
以下是上述选项的代码。
this.events.subscribe("event:loggedOut",()=>{
this.nav.push(LoginPage);
});