【问题标题】:Option elements in JSF / Rich FacesJSF / Rich Faces 中的选项元素
【发布时间】:2011-12-18 16:30:30
【问题描述】:

在一份新工作中做一个 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 中的元素,根本没有任何框架。

【问题讨论】:

    标签: jsp jsf jakarta-ee richfaces


    【解决方案1】:

    如果其他会更好。甚至你可以通过

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

    【讨论】:

    • 不确定你的意思 - 那仍然是一个框架,我需要摆脱框架集。如果不清楚,我已经修改了问题
    • 好吧,我的回答是你想动态插入帧,因为有两种方法首先 if .. else 有条件地插入或使用 bean 的值来评估目标页面
    • 对不起,我的表述不够清晰,现已修改。如果其他用户登录,我希望没有框架(或者我想可能是一个框架集)。我需要杀死左右框架。
    • 那么你可以只放有条件的东西.. 或者更好地选择 facelets
    • 没有太多详细信息,但是在您的回答中使用您的页面链接,我突然想到,我可以在具有框架的页面的文件名上包含来自 bean 的详细信息,或者没有的页面,所以即使它实际上不是帮助我找到它的答案,谢谢
    【解决方案2】:

    当您已经在使用服务器端视图技术时,像框架集这样的客户端包含并不是非常有用。它们不仅对用户体验和 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>
    

    当用户具有“ADMIN”角色时,这将呈现如下:

    <div id="left">
        left.xhtml content
    </div>
    <div id="center">
        center.xhtml content
    </div>
    <div id="right">
        right.xhtml content
    </div>
    

    如果用户没有“ADMIN”角色,如下:

    <div id="center">
        center.xhtml content
    </div>
    

    您可以使用 CSS 来定位和浮动 &lt;div&gt; 元素。

    【讨论】:

    • 正如我在问题中所说,它有框架并且需要保持这种状态。我意识到这对于用户体验并不理想(SEO 根本不重要),这就是为什么我说我希望它没有!但是,有用的信息,所以我会标记它
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 2013-04-11
    • 2011-08-25
    • 1970-01-01
    • 2011-10-01
    • 2011-08-02
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多