如何确定JSP页面使用哪个Tile定义?

时间:2011-01-12 18:03:16

标签: java apache jsp struts tiles

我对Java很新,只是遇到了一个奇怪的问题。以前,一切都很好,我不知道我做了什么搞砸了(我知道,每个人都这么说)。发生的事情是我正在开发一个使用Apache Struts(1.x)和Tiles的Web应用程序,当我在Web浏览器中访问某个页面时,它似乎使用了与以前不同的Tile定义。 / p>

以下是tiles-config.xml中的相关行:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration//EN"
       "http://supplies.ur.com/dtds/tiles-config_1_1.dtd">

<tiles-definitions>
  <definition name=".default" path="/template_new.jsp">
    <put name="title" value="[Company Web App Name]" direct="true"/>
    <put name="customerInfo" value="/customerInfo.jsp" direct="false"/>
    <put name="smallBody" value="" direct="true"/>
    <put name="menu" value="" direct="true"/>
    <put name="quickMenu" value="/quickMenu.jsp" direct="false"/>
    <put name="adminMenu" value="/adminMenu.jsp" direct="false"/>
    <put name="message" value="/message.jsp" direct="false"/>
    <put name="body" value="" direct="true"/>
    <put name="helpAvailable" value="yes" direct="false"/>
    <put name="feedbackAvailable" value="yes" direct="false"/>
    <put name="problemReportingAvailable" value="yes" direct="false"/>
    <put name="newFeaturesAvailable" value="yes" direct="false"/>
  </definition>
  <definition name=".empty" path="/blank.jsp">
    <put name="title" value="[Company Web App Name]" direct="true"/>
    <put name="customerInfo" value="/customerInfo.jsp" direct="false"/>
    <put name="quickMenu" value="/quickMenu.jsp" direct="false"/>
    <put name="message" value="/message.jsp" direct="false"/>
    <put name="body" value="" direct="true"/>
    <put name="footer" value="/footer2.jsp" direct="false"/>
    <put name="helpAvailable" value="yes" direct="false"/>
    <put name="feedbackAvailable" value="yes" direct="false"/>
    <put name="problemReportingAvailable" value="yes" direct="false"/>
    <put name="newFeaturesAvailable" value="yes" direct="false"/>
  </definition>
  <!-- Forgot to include the .rentalHistoryByType definition... -->
  <definition name=".rentalHistoryByType" extends=".default">
    <put name="title" value="Equipment Rental History By Type" direct="true"/>
    <put name="smallBody" value="/rentalHistoryByType_Search.jsp" direct="false"/>
    <put name="body" value="/rentalHistoryByType.jsp" direct="false"/>
  </definition>
  <!-- Added for CoolBeans -->
  <definition name=".customerChoose" extends=".default">
    <put name="title" value="Choose a customer" direct="true"/>
    <put name="quickMenu" value="" direct="true"/>
    <put name="smallBody" value="/customerChoose_Search.jsp" direct="false"/>
    <put name="body" value="/customerChoose.jsp" direct="false"/>
  </definition>
</tiles-definitions>

以下是struts-config.xml的相关行:

<action path="/rentalHistoryByType" type="com.[company name deleted].etrieveit.actions.RentalHistoryByTypeAction">
  <forward name="customerNotSelected" path="/customerChoose.do" />
  <forward name="success" path=".rentalHistoryByType" />
</action>
<!-- Added for CoolBeans -->
<action path="/customerChoose" type="com.[company name deleted].etrieveit.actions.CustomerChooseAction">
  <forward name="success" path=".customerChoose" />
</action>

我要在浏览器中访问的页面是“[path] /rentalHistoryByType.do”,其主体是使用rentalHistoryByType_Search.jsp和rentalHistoryByType.jsp构建的。我发现问题的方法是jQuery突然停止在页面上工作,之前它已经正常工作。在查看源代码时,我发现rentalHistoryByType.do是从blank.jsp构建的,而不是template_new.jsp。 (template_new.jsp的脚本包含jQuery,而blank.jsp没有,页面源中的其他细节也完全匹配blank.jsp。)

我的问题是,如何在请求页面时使用哪个Tile定义以及如何更改它?和/或,什么可能导致页面使用不同于以前显然使用的Tile定义?

很抱歉,如果我的术语错误或令人困惑,我对Java很新,我真的不知道我在做什么......

2 个答案:

答案 0 :(得分:1)

应该有一个struts配置文件(通常名为struts-config.xml),它具有动作到定义的映射,例如:它会包含

<action path="/home"
  type="com.myco.MyHomeAction">
  <forward name="home/landing"
    path="home.definition"/>
</action>

答案 1 :(得分:0)

找到答案;这显然是一个缓存问题。我停止了JBoss,删除了JBoss的\ server \ default \ tmp和\ server \ default \ work文件夹的内容,并重新启动了JBoss,现在它正常工作......