Включить динамическую страницу с помощью DSP, включаемой в atg

Я пытаюсь включить страницу listusers.jsp, на которой просто написано "Hello World". Я читаю имя listusers.jsp из параметра, как показано ниже, из profile.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

Пожалуйста, дайте мне знать, как правильно включить динамическую страницу, используя


person Buddha    schedule 03.11.2014    source источник


Ответы (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.

person radimpe    schedule 03.11.2014
comment
Спасибо, постараюсь вернуться. Не совсем понимаю, что вы подразумеваете под передачей параметра странице, но я передал подстраницу в качестве параметра <dsp:param name="includepage" value="shop.jsp"/> Разве это не то же самое, что передать параметр? - person Buddha; 04.11.2014
comment
Я перечитал ваш код. Вероятно, это сработает. Я пропустил <dsp:param> внутри тега <dsp:a>. Удалю примечание из моего ответа. - person radimpe; 04.11.2014
comment
Как и выше, но <dsp:include page="${ subpage }" /> удалит скрипт и использует переменные EL. - person bated; 04.11.2014

Я думаю, что указание 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>
person Riju Thomas    schedule 21.07.2016