У меня есть страница подпредставления jsp, которой я передал параметр, и я хочу затем передать этот параметр методу get () карты, который хранится в сессионном компоненте.
Ex:
<h:panelGrid id="panelGrid1" rendered="#{MySessionBean[param.id].showPanelGrid1}">
...
</h:panelGrid>
В приведенном выше примере MySessionBean реализует интерфейс Map, и у меня есть собственный метод get, который создаст объект и поместит его в карту, если для ключа [params.id] не существует ни одного. Когда я запускаю код в режиме отладки, мой метод get для MySessionBean никогда не вызывается, и моя панель всегда отображается. Я неправильно передаю параметры? Или доступ к параметру, переданному в подкорректную корректировку?
Вот как я передал параметр этому подпредставлению:
<f:subview id="subview1">
<jsp:include page="/MyTemplatePage.jsp">
<jsp:param name="id" value="staticUniqueId1"/>
</jsp:include>
</f:subview>
Причина, по которой я пытаюсь это сделать, заключается в том, чтобы я мог включать это подпредставление шаблона несколько раз на одной странице, чтобы у каждого экземпляра не было одинаковых объектов бэк-компонента. Таким образом, используя карту в сеансе и передавая ей идентификатор, чтобы получить доступ к компонентам поддержки для каждого экземпляра.
Также я ограничен JSF 1.2, JSTL 1.1, JBoss 4.0.4. Поэтому я не могу использовать ответы, которые используют RichFaces или JSF 2.
РЕДАКТИРОВАНИЕ: 22.11.11 11: 23
Я заменил [param.id] статическим строковым значением.
<h:panelGrid id="panelGrid1" rendered="#{MySessionBean.MY_TEMP_VAL.showPanelGrid1}">
...
</h:panelGrid>
И все заработало. Это вызвало мой метод получения карты и доступ к сессионным компонентам и всему прочему. Так что это явно не нравится всему, используя [params.id], передавая объект карты. Не уверен, что делать отсюда.