gpt4 book ai didi

java - JSF2 AJAX h :selectOneMenu listener doesn't call

转载 作者:行者123 更新时间:2023-12-01 18:57:48 26 4
gpt4 key购买 nike

我尝试在页面上制作 2 h:selectOneMenu 组件。当我从第一个 selectOneMenu 中选择某个主题时,我想将 ajax 与监听器一起使用,在其中获取所选主题的 id 并在其他 selectOneMenu 中填充该主题的列表测试。我使用具有 session 范围的 bean。

<f:event type="preRenderView" listener="#{test.getAllSubjects}" />
<h:form prependId="false">
<h:panelGroup rendered="#{not empty test.testBean.subjectList}">
<h:selectOneMenu value="#{test.testBean.subjectId}" id="subjects">
<f:selectItem itemLabel="--Select a subject--" itemValue="0" />
<f:selectItems value="#{test.testBean.subjectList}"
var="subjectItem" itemValue="#{subjectItem.subjectId}"
itemLabel="#{subjectItem.subject}" />
<f:ajax event="change" render="tests" listener="#{test.testsBySubjectId}" />
</h:selectOneMenu>

<h:selectOneMenu value="#{test.testBean.test.testIdentifer.testId}" id="tests">
<f:selectItem itemLabel="--Select a test--" itemValue="0" />
<f:selectItems value="#{test.testBean.testList}" var="testItem"
itemValue="#{testItem.testIdentifer.testId}" itemLabel="#{testItem.testName}" />
</h:selectOneMenu>
</h:panelGroup>
</h:form>

并在托管bean中使用下一个监听器

public void getTestsBySubjectId() throws DAOException {
Long subjectId = testBean.getSubjectId();
List<Test> testList = testBo.getTestBySubjectId(subjectId);
testBean.setTestList(testList);
}

但是这个监听器永远不会被调用。

这就是为什么我做了一些技巧,将标签更改为 <f:ajax event="change" render="tests" />没有监听器。

但是在 h:selectOneMenu为了测试我做了

<f:selectItems value="#{test.testsBySubjectId}" var="testItem"
itemValue="#{testItem.testIdentifer.testId}"
itemLabel="#{testItem.testName}" />

在那里我初始化值而不是来自 bean 测试列表的值测试。我尝试初始化为

public List<Test> getTestsBySubjectId() throws DAOException {
Long subjectId = testBean.getSubjectId();
List<Test> testList = testBo.getTestBySubjectId(subjectId);
testBean.setTestList(testList);
return testList;
}

这个变体有效。但我不明白为什么以前的监听器变体不起作用。

我的错在哪里?为了获得正确的结果应该改变什么?

最佳答案

监听器不是属性。如果您在 java bean 中的方法是 getTestBySubjectId(),请将其像这样(不需要括号)放在属性中。

 <f:ajax event="change" render="tests" listener="#{test.getTestsBySubjectId}" />

关于java - JSF2 AJAX h :selectOneMenu listener doesn't call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com