当鼠标移动到界面的特定元素上时,如何在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>
支持bean Hello(ManagedBean)包含方法message():
public void message(){
FacesContext.getCurrentInstance().addMessage("f", new FacesMessage("Done"));
}
我想我应该添加一个标签h:message,但是尽管付出了努力,但我无法完成它。任何提示?
答案 0 :(得分:1)
你应该在javascript中处理它,因为mouseOver是一个dom事件
<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)
}
答案 1 :(得分: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" />
Hello bean代码
@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"));
}
}
但更重要的是,你确定这是解决你真正问题的方法吗?最好指定功能需求以获得更好的帮助。
答案 2 :(得分: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; - )