Элементы опций в JSF / Rich Faces - PullRequest
       23

Элементы опций в JSF / Rich Faces

0 голосов
/ 31 октября 2011

Выполнение проекта 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 без каких-либо фреймов вообще.

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Включения на стороне клиента, такие как наборы фреймов, не очень полезны, когда вы уже используете технологию просмотра на стороне сервера. Они не только вредны для пользовательского опыта и 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 для позиционирования и плавания элементов <div>.

1 голос
/ 31 октября 2011

если бы еще было лучше. или даже вы можете управлять им по

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