2011-10-16 33 views
0

我在我的web应用程序中使用了Struts 2。在Struts 2中重定向

通常,我的应用程序中的struts过滤器会在URL模式中查找* .do。

现在有一个额外的要求;当应用程序类型为

 http://appname:port/login.jsp 

,决定是否显示login.jsp是基于业务规则。

所以我应该理想地过滤这个URL模式,并通过struts动作发送它(我们称之为LoginDecideAction)。

第1步是将URL模式添加到web.xml中的过滤器URL模式中。现在我怎么说struts这个URL模式'* login.jsp'映射到LoginDecideAction?

我是Struts 2的新手。帮助表示赞赏。

回答

1

如果您可以显示login.jsp,请添加​​标记以调用可以处理业务逻辑的Struts操作。要显示视图,请使用executeResult="true"。对于S上的更多信息:动作,请参阅以下链接:

http://struts.apache.org/2.0.14/docs/action.html

1

有一对夫妇的方式去了解这一点;我会首先对詹姆斯的答案进行扩展。

(尽管现在S2.0已经很老了;这里是current action tag docs)。

公开login.jsp文件(即,不要将它放在WEB-INF下),并使用其中的<s:action>标签运行LoginDecideAction。动作内部的逻辑决定了接下来会发生什么,尽管通过使用executeResult="true"技术意味着无论发生什么都将在login.jsp URL中,除非它具有用于设置窗口位置的JavaScript。

海事组织这是一个有点笨重(我不是action标签的大粉丝)。我宁愿JSP页面立即重定向到一个动作,该动作可以呈现JSP页面,或者如果业务逻辑说明它应该呈现不同的JSP页面。

可能想见你在说什么,并有实际S2使用struts.action.extension属性(见default struts.properties file docs for details设置jsp作为扩展处理.jsp请求。但随后你需要为它创建一个动作,并且可能确保没有其他.jsp请求由S2处理等。可能不值得。