繁体   English   中英

为什么使用 Ajax 提交表单而不是在 Struts 2 中使用 ModelDriven 设置模型数据?

[英]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}" />

解决方案是在formsj: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM