首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Struts 2调试器中的操作名称/URL名称

使用Struts 2调试器中的操作名称/URL名称
EN

Stack Overflow用户
提问于 2015-07-17 14:37:20
回答 1查看 465关注 0票数 1

自从去年我开始使用这个web应用程序(我没有开发web应用的经验)以来,这一直困扰着我,我不知道这个应用程序的结构是否不正确,或者它是否就是这样的。

我的welcome页面实际上是一个登录页面,在我的应用程序中的用户登录到一个主页之后,他们就有了一个菜单,可以转到其他各种功能。

我是struts.xml**:**

代码语言:javascript
运行
复制
<action name="Welcome">
    <interceptor-ref name="newStack" />
    <result name="success">Login.jsp</result>
</action>

<action name="actLogin" class="actionLogin">
    <interceptor-ref name="newStack" />
    <result name="success">HomePage.jsp</result>
    <result name="error">Login.jsp</result>
</action>

<action name="actHomePage" class="actionHomePage">
    <interceptor-ref name="newStack" />
    <result name="viewUsers">  ViewUsers.jsp</result>
    <result name="addUser">    AddUser.jsp</result>
    <result name="viewWidgets">ViewWidgets.jsp</result>
    <result name="addWidget">  AddWidget.jsp</result>
</action>

JSP文件如下所示:Login.jsp**:**:

代码语言:javascript
运行
复制
<s:form action="actLogin" name="formLogin" method="post">
    <s:textfield name="userId" id="txtUserId"/>
    <s:password name="password" id="txtPassword"/>
    .. login submit button ...
</s:form>

HomePage.jsp**:**

代码语言:javascript
运行
复制
<s:form action="actHomePage" name="formHomePage" method="post">
. . . menu items that set values for action to pick up to route to the correct page
</s:form>

ViewUsers.jsp**:**

代码语言:javascript
运行
复制
<s:form action="actViewUsers" name="formViewUsers" method="post">
    <h2>User List</h2>
    . . .
</s:form>

问题在于用户看到的URL和在调试器(Chrome、IE或Firefox)中列出源文件的URL总是错误的。用户和调试器看到的URL是登录页面上的Welcome (这是可以的),但是在登录之后,他们在HomePage页面上看到了actLogin.html,在ViewUsers页面上看到了HomePage.html。URL总是位于您实际所在的页面后面,因为它使用操作名称。

如果我的登录JSP没有它的表单操作被命名为登录,因为这是正在执行的操作,该操作的结果将转到HomePage

这个应用程序结构奇怪吗?有更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-17 19:39:20

这是由于糟糕的工作流设计造成的。要更正它,您应该阅读有关PRG模式的文章。你可以改变

代码语言:javascript
运行
复制
<action name="actLogin" class="actionLogin">
    <interceptor-ref name="newStack" />
    <result name="success" type="redirectAction">actHomePage</result>
    <result name="error">Login.jsp</result>
</action>

<action name="actHomePage" class="actionHomePage">
    <interceptor-ref name="newStack" />
    <result name="success">HomePage.jsp</result>
</action>

不需要其他结果,但如果需要转发到URL中具有相同操作的不同页面,则可以保留这些结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31478366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档