私はprimefaceが初めてで、 "selectOneMenu"コンポーネントの問題に直面しています。私はすべての私のページに表示されるmainMenu.xhtmlファイルを実装しました。このメインメニューには、言語変更のための「selectOneMenu」コンポーネントがあります。 "selectOneMenu"は、開始ページといくつかの他のページでは開きませんが、開くべきページとそれに応じて動作するページもあります。私は数日前にネットを検索し、ヒントや提案を見つけることができず、それが私の問題を解決しました。 ここでいくつかの助けを見つけるのはとてもいいですね。primefaces:selectonemenuがすべてのページで開かない
以下のコードを参照してください。Identity_Sessionは@ SessionScoped-beanです。 "languageSet"は(String、Integer)のペアのHashMapです。
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
</h:head>
<h:body>
<h:form>
<p:panel>
<h:panelGrid columns="2" cellpadding="5" style="right: 700px; position: absolute; margin-top: -7px;" rendered="#{identity_Session.showMenuLogout()}">
<p:outputLabel for="languageComboBox" value=" #{identity_Session.translate('outputlabel_language')}:" style="font-weight:bold"/>
<p:selectOneMenu id="languageComboBox" value="#{identity_Session.languageID}" style="width:150px">
<p:ajax listener="#{identity_Session.translationAction()}" update="@all" delay="1000"/>
<f:selectItems value="#{identity_Session.getLanguageSet()}" />
</p:selectOneMenu>
</h:panelGrid>
</p:panel>
</h:form>
<br/>
<br/>
</h:body>
</html>
UPDATE !!! 同じWebページ上で同じ値(上記と同じ)を持つ同じselectOneMenu
を使用しています。 selectOneMenu
を「west」-layoutUnitに配置すると開きませんが、「east」-layoutUnitに配置すると開きます。これは実際には "PrimeFaces" - バグか、何か不足していますか?
に変更しようか? – Kukeltje
残念ながら、それは動作しません。次のエラーメッセージが表示されます。javax.faces.component.html.HtmlPanelGridをorg.primefaces.model.menu.MenuElementにキャストできません。理由は、 "menuBar"コンポーネントは "menuItems"、 "subMenus"、 "facets"で構成されていると思います。私はあなたが単に "パネル"、 "panelGrid"または他のコンポーネントタイプを "menuBar"に置くことはできないと思います – shaolinmonkabbot
@allは使用することはお勧めしません、 – Nikola