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 异步加载数据。

我怎样才能做到这一点?

4

2 回答 2

0

解决方案是将 ID 添加formsj:submit标签中。但我不知道为什么表单内的提交标签无法正常工作。正确的代码如下:

<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,一切正常 :)
查看下面评论中的链接

于 2014-06-12T10:42:02.520 回答
0

modelDriven拦截器将模型推送到valueStack. 因此,您可以直接访问模型属性。

<s:property value="%{color}" />
<s:property value="%{manufacturer}" />
于 2014-06-12T10:14:24.430 回答