Struts2偶尔不会执行setter

时间:2018-03-23 08:47:18

标签: jsp struts2 waffle

我使用Struts2 + JSP + Waffle作为我的Java EE框架。 在其中一个JSP中,我创建了一个带有post动作的表单,将数据作为对象传输,如:

<input type="text" name="bookVo.isbn_no" id="isbn_no">

...程序将设置一个新的&#34; bookVo&#34;,其中包含大量输入值。我的程序将执行函数 save()来获取bookVo并执行一些SQL操作。

我在我的功能中添加了一些日志,这是我到目前为止所得到的:

  1. 程序正常运行,它将首先进入 setBookVo(),然后 save()
  2. 我使用Waffle为Windows用户进行一键登录,它根据登录的Windows用户检测用户详细信息,并在不输入密码的情况下快速登录。
  3. 问题发生 我实施了Waffle后,记录器显示它跳过 bookVo()但执行 save(),最终结束了对于bookVo。
  4. 中我的值的Nullpointerexception

    struts.xml中:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <constant name="struts.custom.i18n.resources"
            value="com.booksys.resources.property.message.CommonResources" />
    
        <constant name="struts.multipart.maxSize" value="52428800" />
        <constant name="struts.devMode" value="false" />
    
        <constant name="struts.ognl.allowStaticMethodAccess" value="true" />
    
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    
        <package name="default" extends="struts-default">
            <result-types>
                <result-type name="layout1" class="com.booksys.common.MyTilesTemplateResult" />
                <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
            </result-types>
    
            <global-results>
                <result name="exception">/jsp/common/exception.jsp</result>
            </global-results>
    
            <global-exception-mappings>
                <exception-mapping exception="java.lang.Exception"
                    result="exception"></exception-mapping>
            </global-exception-mappings>
    
            <action name="login">
                <result>/login.jsp</result>
            </action>
    
        <package name="ajax" extends="json-default">
            <interceptors>
                <interceptor-stack name="defaultStack">
                    <interceptor-ref name="json">
                        <param name="enableSMD">true</param>
                    </interceptor-ref>
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
    
            <action name="*JsonAction" method="{1}" class="com.booksys.ajax.JsonAction">
                <result name="fail"></result>
                <result type="json">
                    <param name="root">result</param>
                </result>
            </action>
        </package>
    </struts>
    

    bookSave.jsp:

    <s:form action="booksave.action" method="post" name="form1" id="form1">
     ...more inputs...
     <button id="saveBtn" type="button" onclick="save();">Save</button>
    </s:form>
    
    function save() {
                if(!checkForm()) {
                    /*check each input value, if any input is null or "", return false*/
                    return false;
                }
    
                $( "input:disabled" ).attr("disabled", false);
    
                $('#form1').attr('action','booksave.action');
                    $("#form1").submit();
            }
    

    由于这个问题偶尔会发生,我真的不知道在哪里可以找到解决方案,任何想法如何发生这种情况?

1 个答案:

答案 0 :(得分:0)

经过几天的监控后,一些变化似乎有效,以下是我所做的更改:

  1. 删除struts.xml中的拦截器
  2. 将Waffle分隔到另一个目录并将其链接到登录页面
  3. 注意:我在发布此帖后完全删除了Waffle,但在完全重启后,服务器似乎发生了同样的错误,所以我仍然不确定导致此错误的原因以及如何解决这个问题。不知怎的,过了几天,问题就消失了......