[英]POST request doesn't load the form values into the model using ModelDriven in Struts 2
[英]Why submitting a form with Ajax it's not setting model data using ModelDriven in Struts 2?
我在代码中有以下情况:
动作类:
@NameSpace("/")
public class MyAction extends ActionSupport implements ModelDriven<Car> {
private Car car = new Cart();
@Override
public Car getModel() {
return car;
}
@Action(value = "pageAction", results = {name = SUCCESS, location = "myPage", type="tiles"})
public String showPage() {
return SUCCESS;
}
@Action(value = "formSubmitAction", results = {name = SUCCESS, location = "results.jsp"})
public String formSubmitAction() {
System.out.println(car);
// everything has default values (nulls)
return SUCCESS;
}
}
查看 myPage 位置:
<s:form
namespace="/"
action="pageAction"
method="post" >
<s:push value="model">
<s:textfield name="color" />
<s:textfield name="manufacturer" />
<sj:submit
href="formSubmitAction"
targets="output" />
</s:push>
</s:form>
<div id="output"></div>
结果.jsp:
将空内容呈现为div#output
<s:property value="%{model}" />
<s:property value="%{model.color}" />
<s:property value="%{model.manufacturer}" />
我想知道为什么会这样? 提交后不更新模型数据。
我正在使用struts2-jquery 提交标签。
当我使用没有 Ajax 的简单表单提交时,模型正在更新,但我想使用 Ajax 异步加载数据。
我怎样才能做到这一点?
modelDriven
拦截器将模型推valueStack
。 因此您可以直接访问模型属性。
<s:property value="%{color}" />
<s:property value="%{manufacturer}" />
解决方案是在form
和sj:submit
标签中添加 ID。 但我不知道为什么在表单中提交标签不能正常工作。 正确的代码如下:
<s:form
id="formId"
namespace="/"
action="pageAction"
method="post" >
<s:push value="model">
<s:textfield name="color" />
<s:textfield name="manufacturer" />
<sj:submit
formIds="formId"
href="formSubmitAction"
targets="output" />
</s:push>
</s:form>
编辑
事实证明,您只需将 ID 添加到form
,一切正常:)
看看下面评论中的链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.