我想通过使用struts2瓷砖插件对我的项目进行组件化。 我写的tiles.xml文件是这样的:struts2瓷砖插件存在问题。
<tiles-definitions>
<definition name="indexBaseLayout" template="/indexBaseLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="topBar" value="/topbar.action" />
<put-attribute name="catalog" value="" />
<put-attribute name="searchForm" value="" />
<put-attribute name="main" value="" />
<put-attribute name="footer" value="" />
</definition>
<definition name="regInput.tiles" extends="indexBaseLayout">
<put-attribute name="title" value="注册" />
<put-attribute name="main" value="/reg/input.action" />
</definition>
<definition name="regSuccess.tiles" extends="indexBaseLayout">
<put-attribute name="title" value="注册" />
<put-attribute name="main" value="/reg_success.jsp" />
</definition>
<definition name="index.tiles" extends="indexBaseLayout">
<put-attribute name="title" value="主页" />
<put-attribute name="main" value="/index.jsp" />
</definition>
而且struts.xml中的一部分像这样的:
<package name="main" extends="struts-default" namespace="/">
<action name="topbar" class="topBarAction">
<result name="success">/topbar.jsp</result>
</action>
</package>
正如你看到的,我把一些行动网址放入属性值。我认为他们会作为struts动作执行并显示返回的结果视图。但事实是tiles插件将“xxxx.action”识别为文件:java.io.FileNotFoundException:请求的资源(/bookstore/topbar.action)不可用。 那么是否有任何解决方案将动作的结果视图插入到tile布局中?
我的页面里有一个顶栏。栏中的信息取决于用户是否登录。如果他还没有登录,登录链接将显示,否则登出链接将显示,并且还显示字符串“welcome”+ userName。我搜索了很长时间,并找到了一种在瓷砖定义中执行动作的方法。只需添加请求 INCLUDE 在web.xml内部struts2 filter-mapping标记。它有效,但我不知道为什么。 –
我会建议使用一个标准的jsp与其中的一些struts条件标签在它的测试用户对象的布尔值,也许是isAuthenticated()。我在这里回答了一个登录状态问题的问题:http://stackoverflow.com/questions/6906894/struts-2-session-management-and-dynamically-displaying-jsps/6935182#6935182 –
请参阅我的编辑进一步的说明 –