0

私は mysql データベースからレンダリングされたメニューを配置したアプリケーションを開発しています。メニュー名と mappingIds を db テーブルに挿入しました。現在、リスト(メニューのリスト)をxhtml(jsf htmlタグ)にレンダリングする方法に問題があります。現在、これを使用しています。すべてのメニューをsubMenuBeanList保存し、このリストを保存してから、必要なxhtmlファイルにSession 反復(ui:repeat)します。subMenuBeanList次のようにメニュー名を取得します(ユーザーにメニュー名を表示します):h:commandLink value="#{subMenuBeanList.subMenuNameBean}"およびmappingIdaction="#{subMenuBeanList.subMenuLinkBean}"は以下の明確なコードを参照してください:

 <ui:repeat value="#{session.getAttribute('subMenuBeanList')}" var="subMenuBeanList">

<h:commandLink value="#{subMenuBeanList.subMenuNameBean}"   action="#{subMenuBeanList.subMenuLinkBean}" />  
// i want this <h:commandLink value="menu One Name" action="pretty:menuonemappingid" />
//<h:commandLink value="menu Two Name" action="pretty:menutwomappingid" />
// so on depending upon records in table
// closing tags

ここをクリックすると、h:commandLinkこの例外が発生します

javax.el.MethodNotFoundException: /template/templateslider.xhtml @56,123 action="#{subMenuBeanList.subMenuLinkBean}": Method not found: com.hesco.repository.common.generalinformation.managed.bean.SubMenuBean@1a0974ce.subMenuLinkBean()

私はこれsubMenuLinkBeanがアクション(.java)クラスの変数であるメソッドではないことを知っていますが、ここにそれを入れて、action="#{subMenuBeanList.subMenuLinkBean}"なぜこの例外が発生するのか..

私の質問は、どうすればこれを行うことができますか? どのファイルにもハードコードされていない Db から mappingId を取得したい

これはマネージドBeanクラスです

@ManagedBean(name="subMenuBean")
@ViewScoped
public class SubMenuBean implements Serializable {



    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private Integer subMenuIdBean;
    private Integer menuIdBean;
    private String subMenuNameBean;
    private String subMenuLinkBean;
    private String isActive;
    //jsf will not create nasted object, so that i create it like this.
    private MenuBean menuBean = new MenuBean();

    //private Set<Assigneduserrole> assigneduserroles = new HashSet<Assigneduserrole>(0);
    private ArrayList<SubMenuBean> subMenuBeanList = null;

///setter and getter

これは、Bean の値を設定している別のクラスであり、 query db レコードがフェッチされます。

for (Iterator it = query.iterator(); it.hasNext();) {
                                    Object[] obj = (Object[]) it.next();

                                    log.info("assigning role by iterator");
                                    // adding Section Beans into ArrayList

                                    SubMenuBean subMenuBean = new SubMenuBean();
                                    subMenuBean.setSubMenuIdBean(((Submenu) obj[2]).getSubMenuId());
                                    subMenuBean.setSubMenuNameBean(((Submenu) obj[2]).getSubMenuName());
                                    subMenuBean.setSubMenuLinkBean(((Submenu) obj[2]).getSubMenuLink());
                                    subMenuBean.setMenuIdBean(((Submenu) obj[2]).getMenu().getMenuId());
                                    subMenuBean.setIsActive(((Submenu) obj[2]).getIsActive());
                                    this.subMenuBeanList.add(subMenuBean);

                                    log.info("Sub Menu List: " + this.subMenuBeanList.size());

                                } // ending of Object iterator
4

0 に答える 0