当用户选择/取消选择h:selectManyCheckbox中的某些内容时,我想触发一个事件更改侦听器,如果单独留下它,则不会发生任何事情。
我的xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<link rel="stylesheet" type="text/css"
href="/juritest/resources/css/style.css" />
<script type="text/javascript"
src="/juritest/resources/js/jquery-1.8.2.js"></script>
<script type="text/javascript" src="/juritest/resources/js/menu.js"></script>
</h:head>
<h:body>
<ui:composition template="../../templates/gridsTemplate.xhtml">
<ui:define name="content">
...
<h:panelGroup style="text-align: left">
<hr />
<h:selectManyCheckbox
value="#{gridPopUpBean.oneQuestionUserAnswers}"
layout="pageDirection">
<f:selectItem itemValue="a"
itemLabel="#{gridPopUpBean.currentQuestion.a}" />
<f:selectItem itemValue="b"
itemLabel="#{gridPopUpBean.currentQuestion.b}" />
<f:selectItem itemValue="c"
itemLabel="#{gridPopUpBean.currentQuestion.c}" />
<f:ajax event="click" listener="#{gridPopUpBean.changeListener()}"/>
</h:selectManyCheckbox>
</h:panelGroup>
...
我收到错误消息“一个或多个资源的目标是'head',但视图中没有定义'head'组件。”我有&lt; H:头部&GT;不只是&lt;我知道这是一个可能的问题。
来自bean的片段:
public void changeListener(ValueChangeEvent e) {
change = true;
}
我试过没有&lt; f:ajax like
<h:selectManyCheckbox
value="#{gridPopUpBean.oneQuestionUserAnswers}" valueChangeListener="#{gridPopUpBean.changeListener()}" onclick="submit()"
layout="pageDirection">
<f:selectItem itemValue="a"
itemLabel="#{gridPopUpBean.currentQuestion.a}" />
<f:selectItem itemValue="b"
itemLabel="#{gridPopUpBean.currentQuestion.b}" />
<f:selectItem itemValue="c"
itemLabel="#{gridPopUpBean.currentQuestion.c}" />
<f:ajax event="click" listener="#{gridPopUpBean.changeListener()}"/>
</h:selectManyCheckbox>
但没有运气......
答案 0 :(得分:2)
一个或多个资源的目标是“head”,但视图中没有定义“head”组件。“我有&lt; h:head&gt;而不仅仅是&lt; head&gt;,我读到了这可能是一个问题。
<ui:composition>
以外的任何内容被忽略。如果您需要<h:head>
,则需要进入主模板gridsTemplate.xhtml
(或其任何父模板)。
此外,如果您没有为XHTML文件(如Dreamweaver)使用可视化编辑器,那么我强烈建议您不要将任何内容放在<ui:composition>
,otherwise you keep confusing yourself之外。
<f:ajax event="click" listener="#{gridPopUpBean.changeListener()}"/> public void changeListener(ValueChangeEvent e) {
您将valueChangeListener
与<f:ajax listener>
混淆。 ValueChangeEvent
参数仅适用于valueChangeListener
组件的UIInput
属性。摆脱那个论点。
public void changeListener() {
无关,您正确使用了click
(尽管您可以完全省略它),但您的问题标题提到了change
,这确实是错误的复选框和单选按钮的事件。