2013-03-06 3 views
1

Как можно отобразить простое сообщение в приложении JSF, когда мышь перемещается по определенному элементу интерфейса? Я попробовал этот код, но он не работает, не отображается сообщение:Отображение сообщения в приложении JSF

JSF файл:

<h:form id ="f"> 
<h:selectManyCheckbox onmouseover="#{hello.message()}" layout="pageDirection" border="1" value="#{hello.customersSelect}"> 
    <f:selectItems value="#{hello.customers}"></f:selectItems> 
</h:selectManyCheckbox><br /> 
<h:commandButton action="response.xhtml" value="Click me" /> 
</h:form> 

Подложка боб Hello (ManagedBean) содержит сообщение() метод как:

public void message(){ 
    FacesContext.getCurrentInstance().addMessage("f", new FacesMessage("Done")); 
} 

Я полагаю, что я должен добавить где-нибудь тег h: message, но я не смог его сделать, несмотря на мои усилия. Любой намек?

+0

Вы пытались добавить атрибут 'title', содержащий ваше сообщение в виде строки? –

+0

'onmouseover' - это функция JavaScript, и вы передаете метод на стороне сервера. Измените его для функции JavaScript, которая обрабатывает вашу презентацию сообщения («предупреждение» или что-то еще). –

+0

@f_puras вы прочитали код OP? –

ответ

1

Чтобы удовлетворить ваше любопытство, используйте <f:ajax event="mouseover" listener="#{hello.messageListener}" />:

JSF код

<h:selectManyCheckbox layout="pageDirection" border="1" 
    value="#{hello.customersSelect}"> 
    <f:selectItems value="#{hello.customers}"></f:selectItems> 

    <f:ajax event="mouseover" listener="#{hello.messageListener}" render="messages" /> 
</h:selectManyCheckbox> 
<br /> 
<h:messages id="messages" /> 

Привет код боб

@ManagedBean 
@ViewScoped 
public class Hello { 
    //attributes, constructor and other methods 

    public void messageListener(AjaxBehaviorEvent event) { 
     System.out.println("OnMouseOver ajax event."); 
     FacesContext.getCurrentInstance().addMessage(
      null, new FacesMessage("Done")); 
    } 
} 

Но что еще более важно, вы уверены, что это решение вашей реальной проблемой? Было бы лучше указать функциональное требование, чтобы получить лучшую помощь.

1

вы должны обрабатывать его в JavaScript как MouseOver это событие дом

<h:head>  
<h:outputScript library="js" name="rollover.js" /> 
[...] 
<h:form id ="f"> 
<h:selectManyCheckbox onmouseover="mouseOn('foobar')" layout="pageDirection" border="1" value="#{hello.customersSelect}"> 

и rollover.js:

function mouseOn(text) { 
    alert(text) 
} 
0

Если вы просто хотите статическое сообщение показывается, что не изменяется во время отображения страницы:

<h:form> 
    <h:selectManyCheckbox title="#{hello.message}" layout="pageDirection" 
     border="1" value="#{hello.customersSelect}"> 
     <f:selectItems value="#{hello.customers}"></f:selectItems> 
    </h:selectManyCheckbox><br /> 
    <h:commandButton action="response.xhtml" value="Click me" /> 
</h:form> 

И боб:

public String getMessage() { 
    return "Done"; 
} 

Нет JavaScript на всех ;-)

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