在atg中使用dsp include包含动态页面

时间:2014-11-03 13:39:13

标签: java jsp atg oracle-commerce atg-droplet

我正在尝试添加一个简单地说“Hello World”的页面listusers.jsp。我正在从profile.jsp中显示的参数中读取listusers.jsp的名称。

<!-- 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 个答案:

答案 0 :(得分: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>

请注意,该属性为var而不是id

答案 1 :(得分: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>