1

我有一个用于审核的 Web 应用程序。一切正常,除了一个动作。未提交用于输入每个分配的审计的用户和位置的 JSP 表单

从我的 Windows7 机器上的 Firefox 浏览器(也在安全模式下)执行时,它可以正常工作。在我的机器中使用其他机器或其他浏览器(谷歌浏览器)时,该操作不会执行,而只是重定向。我在 Eclipse 中为该特定方法设置了一个断点,发现除非从我的 Windows7/Firefox 访问,否则它不会被命中。

这种行为可能有任何原因吗?我该如何解决?

资源:

审计.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="com.hereafter.audit.ui.servlet" namespace="/audit"
    extends="struts-default,json-default">

....

    <action name="*Audit" class="com.hereafter.audit.ui.servlet.AuditAction" method="{1}">      
        <result name="success" type="redirectAction">               
            <param name="actionName">jspAudit</param>
            <param name="namespace">/audit</param>
        </result>
        <result name="message">/audit/pages/template/Message.jsp</result>
    </action>

....

</package>
</struts>

分配审计.jsp

<%@ taglib prefix="s" uri="/struts-tags"%>


    <form id="AuditAssignForm" action="assignAudit.action" method="post">
        <div >
            <h5>Instruction Details</h5>
            <label>Users :</label>
            <s:select id="user-multiselect" name="assignment.userList"
                cssClass="input-xlarge" multiple="multiple" list="userList"
                listKey="userID" listValue="userName"></s:select>                

            <label>Start Time :</label>
            <div id="datetimeStartTime" class="input-append date">
                <input data-format="dd/MM/yyyy hh:mm:ss"
                    name="assignment.scheduleInformation.timeStart" type="text"
                    class="input-large"></input> <span class="add-on"> <i
                    data-time-icon="icon-time" data-date-icon="icon-calendar"> </i>
                </span>
            </div>

            <label>End Time</label>
            <div id="datetimeEndTime" class="input-append date">
                <input data-format="dd/MM/yyyy hh:mm:ss"
                    name="assignment.scheduleInformation.timeEnd" type="text"
                    class="input-large"></input> <span class="add-on"> <i
                    data-time-icon="icon-time" data-date-icon="icon-calendar"> </i>
                </span>
            </div>

            <label>Events</label>
            <s:select id="event-drop-down" cssClass="input-xlarge"
                list="eventList" listKey="eventID" listValue="eventName"></s:select>
            <label>Audit Type</label> <select name="assignment.auditType">
                <option value="LIVE">LIVE VIEW</option>
                <option value="RECORDED">RECORDED</option>
            </select>


            <div>
                <button id="assign-audit-button" class="btn btn-primary"
                    type="submit">
                    <i class="icon-save"></i> Save
                </button>
                <a href="#myModal" data-toggle="modal" class="btn">Cancel</a>
                <div class="btn-group"></div>
            </div>
        </div>
        <div class="block span6">
            <div class="block-heading">
                <a>Locations</a>
            </div>
            <div class="block-body"
                style="min-height: 250px; height: 350px; overflow: auto;">
                <div id="location-tree"></div>
                <div class="clearfix"></div>
            </div>
        </div>
        <s:hidden name="audit.id"></s:hidden>
    </form>
</div>

4

2 回答 2

0

如果它在您的浏览器中有效,但在其他浏览器中无效,并且在其他机器的任何浏览器中都无效,包括在您的浏览器中有效,那么它必须与浏览器设置相关。仔细检查您的 Chrome 的网络/代理设置,并尝试将它们应用到您机器中的另一个浏览器。

如果它不起作用,1) 启用devMode并查找异常或错误消息,以及 2) 检查与 Chrome DevTools 的网络通信,然后将发送的请求(标​​头、参数)与浏览器不工作时发送的请求进行比较,例如带有 Firefox DevTools 或 Firebug 的 Firefox。

于 2014-10-22T08:42:15.070 回答
0

表单不起作用的原因是它没有正确映射到 Struts 动作。

您可以使用s:form标签并检查它是否命中操作。

它可能会损害您的设计,但您可以simple在表单上尝试一个主题:

<s:form id="AuditAssignForm" namespace="/audit" action="assignAudit" method="POST" theme="simple">
于 2014-10-22T09:15:28.497 回答