【问题标题】:Calling Struts2 Namespace from Normal HTML form从普通 HTML 表单调用 Struts2 命名空间
【发布时间】:2013-12-17 18:32:23
【问题描述】:

例外:

描述:请求的资源/Strut2Examples/checkMethods/updateCRUD 不可用。如何使用 Struts2 从 normal HTML 调用基于 namespace 的操作。它适用于 Struts2 表单。请帮我理解。

HTML:

    <s:form namespace="/checkMethods" action="executeCRUD" >            
        <s:submit label="execute" value="execute" />
    </s:form>

    <form  name="normalForm" id="normalForm">
    <input type="button" value="update" onclick="submitForm()"/> 
    </form>

Java 脚本:

   <script type="text/javascript">
     function submitForm()
     {
         var myForm = document.getElementById("normalForm");
         myForm.action="checkMethods/updateCRUD";
         myForm.submit();
     }
    </script>

【问题讨论】:

    标签: java javascript jsp struts2 action


    【解决方案1】:

    如果您想使用 HTML 表单标签,您应该使用 url 标签的操作名称和命名空间属性来构建 URL。例如

    <form action="<s:url namespace="/checkMethods" action="deleteCRUD"/>" method="POST">
    

    同样的问题是你可以混合url标签的JavaScript代码。像这样

    myForm.action='<s:url namespace="/checkMethods" action="deleteCRUD"/>';
    

    实际上,如果你定义了表单的 action 属性,你就不需要在事件处理函数中构造 URL。只需submit()

    您应该认真对待url 标签,因为例如您在action 属性中构建了缺少上下文路径和斜杠的URL,并且您所做的错误无法计数。

    【讨论】:

    • 感谢回复,如何使用Struts2的命名空间没有像
    • 可以从ServletActionContext.getActionMapping().getNamespace()获取命名空间
    • 所以你说如果没有struts2标签我就无法实现!因为使用 ServletActionContext.getActionMapping().getNamespace() 可以获取但不能在表单中设置。
    • 在表单或脚本中你必须设置action属性,因为你没有使用strutsform标签你可以使用strutsurl标签。如果您不想同时使用这两个标签,则必须手动构建 url。注意向 Struts 提供正确的 URL,以便能够检索对应于动作映射的动作配置。否则会得到 404 错误码。
    • 感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多