我正在使用Struts2框架并试图让它返回到页面上的特定部分id
。目前,当我尝试执行以下操作时会抛出错误:
<struts>
<constant name="struts.devMode" value="false"/>
<package name="default" namespace="/" extends="struts-default">
<action name="default">
<!--suppress Struts2ModelInspection -->
<result type="redirectAction">index.jsp</result>
</action>
<action name="sendEmail" class="com.brickhouse.action.EmailAction">
<result name="success">index.jsp#contact</result>
</action>
<action name="sendNewsletter" class="com.brickhouse.action.NewsletterAction">
<result name="success">index.jsp</result>
</action>
</package>
当然,如果我删除主题标签并让"sendMail"
操作返回到常规index.jsp
而不是index.jsp#contact
,那么它可以正常工作。
我要返回的id
部分是contact
。
<section id="contact">
<div class="container">
. . . .
</div>
</section>
有什么想法吗?
答案 0 :(得分:1)
您不应使用#符号作为调度程序结果,因为调度程序不会更改请求转发到的URL。找不到具有此名称的资源。相反,您可以使用它来构建URL或重新定向重定向结果类型以跳到该部分(从不使用最后一个)。例如
<s:url var="skipToContact" value="#contact"/>
<s:a href="%{#skipToContact}">Skip to Contact</s:a>
...
<section id="contact"></section>
单击它时,将跳到该部分。确保该部分不在文档的末尾,即从部分到文档末尾的高度大于浏览器窗口高度。