Я разрабатываю приложение, в котором я поместил меню, которые отображаются из базы данных mysql. Я вставил имена меню и идентификаторы сопоставления в таблицу БД. теперь у меня возникает проблема, как мне преобразовать список (список меню) в xhtml (теги jsf html) в настоящее время я использую это, я сохранил все меню в subMenuBeanList
и сохранил этот список в Session
, а затем перебрать (ui:repeat
) subMenuBeanList
в файл xhtml где я хочу получить имена меню (показать имена меню пользователю) следующим образом: h:commandLink value="#{subMenuBeanList.subMenuNameBean}"
и mapId action="#{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
не является методом, это переменная в классе action(.java), но здесь я поместил его в action="#{subMenuBeanList.subMenuLinkBean}"
, поэтому я получаю это исключение..
мой вопрос в том, как мне это сделать? я хочу получить идентификатор отображения из БД, не жестко закодированный в каком-либо файле
это класс управляемого компонента
@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
- это записи базы данных..
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
jsf 2.1, prettyfaces 3.3.3, primefaces 3.5 , hibernate 4.0
- person mo sean   schedule 21.10.2013