我试图找到一个可以传递给f:ajax标签的属性"event"的所有可能值的列表.
我知道我也可以从我的.js文件中传递函数名称,但我需要的只是JSF附带的函数名称.
我只知道点击鼠标悬停和键盘,但我相信还有更多.只是不知道在哪里找到它们.
所以我找到了一些接近这个的答案,我发现足以解决我遇到的问题.但即使这样,我也很好奇了解这方面的运作方式.让我用一个例子来说明:
我有一个.xhtml看起来像这样(缩短)的facelet 页面.
<h:form id="resultForm">
<h:panelGroup class="search_form" layout="block">
<h:inputText id="lastname" value="#{search.lastname}"/>
<h:commandButton action="#{search.find}" value="Find">
<f:ajax execute="lastname" render="resultDisplay"/>
</h:commandButton>
</h:panelGroup>
<h:dataTable value="#{search.searchResults}" var="results" id="resultDisplay"
rendered="#{!empty search.searchResults}">
<h:column>
#{results.field}
</h:column>
</h:dataTable>
</h:form>
Run Code Online (Sandbox Code Playgroud)
现在,为了突破性,我不会发布所有的支持bean代码,但我有这样的东西:
public void find() {
searchResults = setResults(true);
}
Run Code Online (Sandbox Code Playgroud)
哪里searchResults是ArrayList<Objects>.在搜索之后,它不是null - 在多个测试中检查(可以为null,但不在我正在进行的测试中).
现在.这不起作用.
但是,如果我将dataTable内部嵌套在另一个内部panelGroup,那么它会起作用.
<h:panelGroup id="resultDisplay">
<h:dataTable value="#{search.searchResults}" var="results"
rendered="#{!empty search.searchResults}">
<h:column>
#{results.field}
</h:column>
</h:dataTable>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
现在,这种变化可以让一切正常.我对此感到满意......但我想我也在寻求一些理解.有关为什么我必须嵌套这些组件的任何见解?我肯定错过了一些东西!
我想构建一个表单,根据其他组件的状态动态更改可见的组件.
例如......有一些文本框和一些复选框,如果用户激活某个复选框,则应显示一堆其他输入元素.
我可以使用JSF 2.0 + Tomahawk执行此操作,还是必须使用另一个库来执行此操作?我怎么能这样做?没有AJAX,这将无法工作,是吗?
提前致谢!