2

私は outputLink の多くのメニューを持っており、データベース mysql から次のように生成しました。

<ui:repeat value="#{loginAction.subMenusBeans.subMenusBeansList}" 
var="subMenusBeansList">
<ui:fragment rendered="#{menusBeansList.menuId == subMenusBeansList.menuId}" >   

<h:commandLink id="circlLink" value="#{subMenusBeansList.subMenuName}"  
action="{subMenusBeansList.subMenuLink}" />
</ui:fragment>
</ui:repeat>

データベースからアクションの値を取得し、それを「subMenusBeansList.subMenuLink」に設定します

出力:

head quarter
main offices
offices
and so on..

上記のリンクのいずれかをクリックしたとき

例外: action="#{subMenusBeansList.subMenuLink}":メソッドが見つかりません:

多くのハイパーリンクがあり、データベースからすべてのリンクアクションを設定し、ui:repeat を使用してそれらを xhtml に生成したいので、データベースからアクションメソッド名を設定したいのですが、#{subMenusBeansList.subMenuLink}'スロー例外から生成されたハイパーリンクのアクションのいずれかをクリックすると

 javax.servlet.ServletException: javax.el.MethodNotFoundException: /template/
    templateslider.xhtml @36,135 action="#{subMenusBeansList.subMenuLink}":
 Method not found: com.ss.managedbeans.SubMenusBeans@552edddd.subMenuLink()
4

1 に答える 1

0

ここで発生している問題は、<h:outputLink action="XXXX">実際には MethodExpression が必要であることです。これが、プロパティ「subMenuLink」のゲッターを解決しようとしない理由です。

BalusC が提案したように、代わりに ` を使用することをお勧めします。この属性は ValueExpression を想定しており、プロパティとそのゲッターを解決できる必要があります。

于 2013-03-22T19:35:54.203 に答える