2014-02-20 50 views
0

好的,我試圖將我的項目從Primefaces 3.5移動到4.0,並且我努力使用新的MenuModel API。我確定這是愚蠢的,但我無法爲我的Breadcrumb顯示DefaultMenuItem,其值來自.properties文件(在faces-config中定義爲資源束)。帶有.properties文件(資源包)中的值的DefaultMenuItem

我有什麼用Primefaces 3.5:

 MenuItem menuItem; 

     // Where "getPath()" returns all the pages needed to get to the current one 
     for (Page page : currentPage.getPath()) { 
      menuItem = new MenuItem(); 
      // Where "getTitle()" returns something like "#{message.home}" which will be resolved as "Home" 
      menuItem.setValueExpression("value", expressionFactory.createValueExpression(elContext, page.getTitle(), String.class)); 
      menuItem.setActionExpression(expressionFactory.createMethodExpression(elContext, page.getAction(), String.class, new Class[0])); 
      menuItem.setAjax(false); 
      menuItem.setAsync(false); 
      menuItem.setImmediate(true); 
      breadCrumbModel.addMenuItem(menuItem); 
     } 

我Primefaces 4.0和新DefaultMenuItem對象試了一下:

menuItem.setValue(page.getTitle());

menuItem.setValue(expressionFactory.createValueExpression(elContext, tmp.getTitle(), String.class));

menuItem.setParam("value", expressionFactory.createValueExpression(elContext, tmp.getTitle(), String.class));

menuItem.setTitle(page.getTitle()); < ---我甚至嘗試,在絕望哈哈

我擡頭一看用戶指南和API文檔(未註釋:(),但它並沒有過多談論這種情況下,大部分的時間的例子使用普通的醇'字符串。我究竟做錯了什麼 ?

謝謝。

回答

0

有同樣的問題後,我發現這個解決方案,它的作品!我使用primefaces 5.0:

public void addMiga(String action, String label) throws Exception { 
    DefaultMenuItem item = new DefaultMenuItem(); 
    item.setFragment(label); 
    String valueTitulo = ""; 
    HtmlOutputText seccionLabel = new HtmlOutputText(); 
    if (label != null && !"".equals(label)) { 
     String[] expresiones = label.split(","); 
     for (String expresion : expresiones) { 
      if (expresion.contains("label_") 
        || expresion.contains("_label")) { 
       seccionLabel.setValueExpression("value", 
         getValueExpression(expresion)); 

      } else { 
       seccionLabel.setValue(expresion); 
      } 
      valueTitulo += " " + (String) seccionLabel.getValue(); 
     } 
    } 
    item.setValue(valueTitulo); 
    item.setId(Integer.toString(this.migas.getElements().size())); 
    item.setOnclick(ConstantesErp.FUNCION_STATUS); 
    item.setCommand(action); 
    item.setAjax(false); 
    this.migas.addElement(item); 
} 

public static ValueExpression getValueExpression(String nombre) { 
     FacesContext fc = FacesContext.getCurrentInstance(); 
     Application app = fc.getApplication(); 
     ELContext elContext = fc.getELContext(); 
     ExpressionFactory factory = app.getExpressionFactory(); 
     ValueExpression ve = null; 
     try { 
      ve = factory.createValueExpression(elContext, "#" + "{" + nombre 
        + "}", String.class); 
     } catch (Exception e) { 
      ve = null; 
     } 
     return ve; 
    } 
相關問題