论坛首页 Java版 Struts

struts2 + tiles,通过tiles跳转到jsp页面,jsp页面取不到值。

浏览 1252 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-11-04 关键字: struts2 + tiles
web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>  
  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <filter>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>  
  <filter-mapping>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <filter>
  	<filter-name>struts-cleanup</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  </filter> 
  <filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <filter>
    <filter-name>Struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>
 <filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>
  
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
   
  <context-param>
     <param-name>org.apache.tiles.CONTAINER_FACTORY</param-name>
     <param-value>org.apache.struts2.tiles.StrutsTilesContainerFactory</param-value>
  </context-param>  
  <context-param>
    <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
    <param-value>/WEB-INF/tiles.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
  </listener>
    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <taglib> 
    <taglib-uri>/WEB-INF/tiles-jsp.tld</taglib-uri> 
    <taglib-location>/WEB-INF/tiles-jsp.tld</taglib-location> 
  </taglib>
</web-app>


struts.properties如下:
struts.devMode=true
struts.action.extension=action
struts.enable.DynamicMethodInvocation=true
struts.i18n.reload=true

struts.locale=zh_CN
struts.i18n.encoding=UTF-8
struts.objectFactory=spring
struts.objectFactory.spring.autoWire=name

struts.serve.static.browserCache=false
struts.url.includeParams=none
struts.custom.i18n.resources=ApplicationResources

struts.xml文件如下:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
  <package name="example" extends="tiles-default" namespace="/">	    
     <action name="console" class="consoleAction">
        <result name="success" type="tiles">main.console</result>
        <result name="error">/login/error.jsp</result>
     </action>
  </package>
</struts>


tiles.xml文件如下:
<?xml version="1.0" encoding="GB2312" ?>

<!DOCTYPE tiles-definitions PUBLIC
        "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
        "http://struts.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>
  <definition name="mainLayout" template="/layouts/frameLayout.jsp">
    <put-attribute name="title" value="Test" />
    <put-attribute name="project" value="/app_project.jsp" />
    <put-attribute name="buttonBar" value="/app_button_bar.jsp" />
    <put-attribute name="menuFrame" value="/tiles/header.jsp" />
    <put-attribute name="mainFrame" value="/my_desktop.jsp" />
  </definition>
  
  <definition name="main.console" extends="mainLayout">
    <put-attribute name="title"  value="Test -- 控制台" />
    <put-attribute name="project" value="/app_console_project.jsp" />
    <put-attribute name="buttonBar" value="/app_console_button_bar.jsp" />
    <put-attribute name="menuFrame" value="/common/menu/console_tree.jsp" />
    <put-attribute name="mainFrame" value="/my_desktop.jsp" />
  </definition>

</tiles-definitions>


ConsoleAction.java如下
public class ConsoleAction extends BaseAction {
	
	private MenuModuleService menuModuleService;
	
	private String userName;
	private String treeString;

  /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public String execute()throws Exception{
		Map session = ActionContext.getContext().getSession();
		User user = (User)session.get(Constant.SESSION_USER);
		this.userName = user.getName();
		Map map = this.menuModuleService.getListByUser(user.getId());
		this.treeString = MenuTree.mapToTree(map,"0","mainFrame", true, MenuTree.NoneCheck);
		return this.SUCCESS;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getTreeString() {
		return treeString;
	}

	public void setTreeString(String treeString) {
		this.treeString = treeString;
	}

	public void setMenuModuleService(MenuModuleService menuModuleService) {
		this.menuModuleService = menuModuleService;
	}

}


而对于main.console下的console_tree.jsp如下:
<%@ include file="/common/jsp/common.jsp" %>
<s:property value="userName" />
<s:property value="treeString" />


问题如下:
这时在console_tree.jsp页面上<s:property value="userName" />和<s:property value="treeString" />总是取不到值。而奇怪的是在tiles文件中的main.console的父一层mainLayout,也就是/layouts/frameLayout.jsp页面上,<s:property value="userName" />和<s:property value="treeString" />就能取到ConsoleAction里传过来的值。是不是我在tiles的配置上出现了问题?
   
最后更新时间:2008-07-31
ok,it is so complex
   
0 请登录后投票
论坛首页 Java版 Struts

跳转论坛:
JavaEye推荐