2014-11-03 77 views
0

我試圖包括一個簡單地說「Hello World」的頁面listusers.jsp。我正在從profile.jsp中從參數中讀取listusers.jsp的名稱,如下所示。包括一個動態頁面使用dsp include在atg

<!-- profile.jsp --> 
<table width="100%" border="0px"> 
    <tr><td> 
    <table border="0px"> 
     <tr> 
     <td> 
      <dsp:a page="profile.jsp">List Users 
       <dsp:param name="includepage" value="listusers.jsp"/> 
      </dsp:a> 
      <dsp:a page="profile.jsp">Shop 
       <dsp:param name="includepage" value="shop.jsp"/> 
      </dsp:a> 
     </td> 
     </tr> 
    </table> 
    </td> 
    <td> 
     <dsp:getvalueof param="includepage" id="subpage" > 
      <dsp:include page="<%= subpage %>" /> 
     </dsp:getvalueof> 
    </td></tr> 
</table> 

這是給我的,當我試圖打開profile.jsp

A:\Tomcat\apache-tomcat-7.0.37\atgbases\ATG\work\Catalina\localhost\MyStore\org\apache\jsp\profile_jsp.java:168: error: method setPage in class IncludeTag cannot be applied to given types; 
      _jspx_th_dsp_005finclude_005f1.setPage(subpage); 
             ^
    required: String 
    found: Object 
    reason: actual argument Object cannot be converted to String by method invocation conversion 
1 error 
1 warning 

請讓我知道,包括使用

回答

2

你只是給人一種動態頁面的正確方法如下錯誤getvalueof變量的錯誤屬性。

相反的:

<dsp:getvalueof param="includepage" id="subpage" > 
    <dsp:include page="<%= subpage %>" /> 
</dsp:getvalueof> 

而是嘗試:

<dsp:getvalueof param="includepage" var="subpage" > 
    <dsp:include page="<%= subpage %>" /> 
</dsp:getvalueof> 

注意屬性varid

+0

謝謝,會盡力回來。通過傳遞一個參數到頁面不完全明白你的意思,但我已經通過子頁面作爲參數''這是不是同樣的事情作爲傳遞參數? – Buddha 2014-11-04 02:09:42

+0

我已重讀您的代碼。它可能會工作。我錯過了''標籤內的''。將從我的答案中刪除註釋。 – radimpe 2014-11-04 15:39:26

+0

與上面一樣,''dsp:include page =「$ {subpage}」/>'會刪除腳本讓和使用EL變量。 – bated 2014-11-04 17:27:27

0

我認爲指定idtype="java.lang.String"<dsp:getvalueof />標記可能會解決您的問題。它看起來像當前變量subpage創建爲Object而不是String

<dsp:getvalueof param="includepage" id="subpage" idtype="java.lang.String"> 
    <dsp:include page="<%= subpage %>" /> 
</dsp:getvalueof>