Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp JSF/Rich Faces中的选项元素_Jsp_Jsf_Jakarta Ee_Richfaces - Fatal编程技术网

Jsp JSF/Rich Faces中的选项元素

Jsp JSF/Rich Faces中的选项元素,jsp,jsf,jakarta-ee,richfaces,Jsp,Jsf,Jakarta Ee,Richfaces,在新工作中执行RichFaces/jsf项目的时间不长 主页有一个包含框架集的xhtml页面。在一个理想的世界中,它不会有,但它有,它需要保持这种方式,但当你作为某个级别的用户登录时,不会使用侧框 <frameset cols="#{Base.sideBars['left'].width},*,#{Base.sideBars['right'].width}" id="contentframes" > <frame name="left" src="left.jsf" id="l

在新工作中执行RichFaces/jsf项目的时间不长

主页有一个包含框架集的xhtml页面。在一个理想的世界中,它不会有,但它有,它需要保持这种方式,但当你作为某个级别的用户登录时,不会使用侧框

<frameset cols="#{Base.sideBars['left'].width},*,#{Base.sideBars['right'].width}" id="contentframes" >
<frame name="left" src="left.jsf" id="leftframe"/>
<frame name="center" src="center.jsf" id="centerframe" />
<frame name="right" src="right.jsf" id="rightframe" />
</frameset>

是否有一种“本机”方式来更改它,以便只包含中心框架,还是更容易将其更改为jsp并在其周围放置if/else

我需要的是生成的html,如下所示:

<frameset cols="20,*,20" id="contentframes" >
<frame name="left" src="left.jsf" id="leftframe"/>
<frame name="center" src="center.jsf" id="centerframe" />
<frame name="right" src="right.jsf" id="rightframe" />
</frameset>


当您以一个用户身份登录时,但如果另一个用户登录,则只包含centerframe.jsf中的元素,而不包含任何框架。

如果有其他更好的方法。甚至你也可以通过

<frame name="center" src="#{someBean.centerPage}.jsf" id="centerframe" />

当您已经在使用服务器端视图技术时,客户端包含(如框架集)并不十分有用。它们不仅不利于用户体验和SEO,而且几乎不允许从服务器端进行细粒度控制。您应该改为使用服务器端包含。在JSF中,您可以使用
rendered
属性有条件地显示内容

<h:panelGroup id="left" layout="block" rendered="#{user.hasRole('ADMIN')}">
    <ui:include src="left.xhtml" />
</h:panelGroup>
<h:panelGroup id="center" layout="block">
    <ui:include src="center.xhtml" />
</h:panelGroup>
<h:panelGroup id="right" layout="block" rendered="#{user.hasRole('ADMIN')}">
    <ui:include src="right.xhtml" />
</h:panelGroup>

当用户具有“管理员”角色时,将按如下方式呈现:


left.xhtml内容
center.xhtml内容
right.xhtml内容
如果用户没有“ADMIN”角色,则如下所示:


center.xhtml内容

您可以使用CSS定位和浮动
元素。

不确定您的意思-这仍然是一个框架,我需要去掉框架集。我已经修改了这个问题,以防不清楚。我的回答是,你想动态插入帧,因为有两种方法,首先,如果。。否则,有条件地插入或使用bean的值来评估目标页面对不起,我不清楚,现在已经修改了它。如果其他用户登录,我希望没有帧(或者我想可能是一个帧集)。我需要消除左帧和右帧,然后你可以把有条件的东西。。或者更好的选择Facelets没有太多细节,但是在你的答案中有你的页面链接,我突然想到我可以在有框架的页面文件名上,或者在没有框架的页面文件名上,用一个bean的细节来做一个UI包含,所以尽管它实际上不是答案,但它帮助我找到了它,谢谢我在问题中说,它有框架,需要保持这种状态。我意识到这对用户体验来说并不理想(SEO根本不重要),这就是为什么我说我希望它不会!然而,有用的信息,所以我会标记它
<div id="left">
    left.xhtml content
</div>
<div id="center">
    center.xhtml content
</div>
<div id="right">
    right.xhtml content
</div>
<div id="center">
    center.xhtml content
</div>