1

我在使用 Struts2 框架使用 jQuery 设置嵌套字段时遇到问题。

如果该对象具有二级字段,则我无法设置对象的ModelDriven字段。myModel

那是:

我无法设置字段myModel.myObject.myField,但我可以设置myModel.myField

有人可以帮助并告诉如何在模型中设置嵌套字段吗?

要清楚:

下面的代码有效:

<script>
    function myFunction(myVal) {
        $.getJSON('login/open', {
            myField : myVal
        }, function(data) {
            if(data.ajaxResponseCode == 0){
                $("#myButton").remove();
                $("#myId").html("id set to=" + data.idSet + '');
            };
            return false;
        });
    };
</script>

下面的代码不起作用:

<script>
function myFunction(myVal) {
    $.getJSON('login/open', {
        myObject.myField : myVal
    }, function(data) {
        if(data.ajaxResponseCode == 0){
            $("#myButton").remove();
            $("#myId").html("id set to=" + data.idSet + '');
        };
        return false;
    });
};
</script>

使用 JSP Struts 标签设置字段的有趣之处在于:

<s:textfield name="myObject.myField" />
4

1 回答 1

1

如果您使用模型驱动的动作和实现ModelDriven的接口,您应该确保拦截器堆栈已正确配置为动作。请参阅答案以更好地理解拦截器堆栈配置。

您还可以使用 adevMode并检查 OGNL 产生的异常来检查错误消息。查看答案以获得更好的解释和使用模型驱动的示例。

如果您拥有评估 OGNL 表达式所需的所有配置和 Java 对象,那么您可以查看OGNL 基础知识以更好地了解 OGNL 的工作原理。

当调用 jQuery Ajax 函数并使用选项将参数传递给 Struts2 操作时,请确保在params拦截器将参数名称填充到操作 bean 或模型之前,您已在请求中获取参数名称。

试试这个代码,如果它适合你就改变它

$.getJSON('login/open', {
    'myObject.myField' : myVal
}, function(data) {
于 2014-07-12T10:16:30.747 回答