我有一个 jsp 子视图页面,我已将参数传递给该页面,然后我想将该参数传递给存储在会话 bean 中的地图的 get() 方法。
前任:
<h:panelGrid id="panelGrid1" rendered="#{MySessionBean[param.id].showPanelGrid1}">
...
</h:panelGrid>
在上面的示例中,MySessionBean 实现了 Map 接口,并且我有自己的自定义 get 方法,如果键 [params.id] 不存在,该方法将创建一个对象并将其放入映射中。当我在调试模式下运行代码时,我的 MySessionBean 的 get 方法永远不会被调用,并且我的面板总是被渲染。我没有正确传递参数吗?或者访问传递给子视图的参数是否正确?
这是我将参数传递给此子视图的方式:
<f:subview id="subview1">
<jsp:include page="/MyTemplatePage.jsp">
<jsp:param name="id" value="staticUniqueId1"/>
</jsp:include>
</f:subview>
我尝试这样做的原因是我可以在一个页面中多次包含这个模板子视图,这样每个实例就不会有相同的支持 bean 对象。因此在会话中使用一个映射并传递一个 id 以获得对每个实例的支持 bean 的访问。
另外,我受限于 JSF 1.2、JSTL 1.1、JBoss 4.0.4。所以我不能使用使用 RichFaces 或 JSF 2 的答案。
编辑:11/22/11 11:23
我用静态字符串值替换了 [param.id]。
<h:panelGrid id="panelGrid1" rendered="#{MySessionBean.MY_TEMP_VAL.showPanelGrid1}">
...
</h:panelGrid>
一切正常。它触发了我的 map get 方法并访问了会话 bean 和所有内容。因此,使用 [params.id] 传递给地图对象显然不喜欢整体。不知道从这里做什么。