2014-11-16 1 views
2

У меня есть два JSF компонента, как это:получить Jsf compoment идентификатор в резервном боб

<a4j:commandButton id="cmdtop" 

        disabled="#{ViewDocument.locked or !(documentAttachmentBean.canEditAttachment)}" 
        action="#{documentAttachmentBean.onCmdIncreaseAttachmentCodeClick}" 

        ... 


</a4j:commandButton> 

<a4j:commandButton id="cmddown" 
        disabled="#{ViewDocument.locked or !(documentAttachmentBean.canEditAttachment)}" 
        action="#{documentAttachmentBean.onCmdDecreaseAttachmentCodeClick}">  
    ...      

</a4j:commandButton> 

в моей бэк-боба с canEditAttachment() метод, который я хочу, чтобы проверить, если он был вызван для cmdtop или cmddown? некоторые вещи, как это:

public boolean getCanEditAttachment() 
{ 
    if (somecode.getElementId.equals"cmdtop") 
//do something 
return true ; 
    else if (somecode.getElementId.equals"cmddown") 
    //do something else 
    return false ; 

}

как я могу найти canEditAttachment() вызывается с кем?

ответ

2

В JSF есть некоторые глобальные переменные. component - один из них. вы можете получить доступ к текущему компоненту, который отображает на данный момент переменную component.

XHTML
<h:commandButton id="cmdtop" 
       disabled="#{myBackingBean.canEditAttachment(component.id)}" 
       value="Button 1"/> 

<h:commandButton id="cmddown" 
       disabled="#{myBackingBean.canEditAttachment(component.id)}" 
       value="Button 2"/> 

ява

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 

@ManagedBean 
@ViewScoped 
public class MyBackingBean { 

    public boolean canEditAttachment(String componentId) { 
     if ("cmdtop".equalsIgnoreCase(componentId)) 
      return true; 
     else if ("cmddown".equalsIgnoreCase(componentId)) 
      return false; 

     return true; 
    } 

} 
+0

Спасибо! оно работает ! но, пожалуйста, скажите другие глобальные переменные? – OmiD

+0

Они называются неявными объектами. В [этом сообщении блога] есть список (http://incepttechnologies.blogspot.com.tr/p/jsf-implicit-objects.html). – bhdrk

0

Я считаю, что это работает только с JSF 2.0. JSF 2.0 добавляет неявные переменные, чтобы упростить решение.

как

отключен = "# {myBackingBean.canEditAttachment (component.id)}"

Если вы работаете с устаревшей унаследованного кода, который использует JSF ниже, чем 2.0, это не будет работать.

Смежные вопросы