我试图让h:inputText在单击h:commandButton时用不同的开关切换出来。为此,我试图将f:ajax命令与h:commandButton绑定在一起,让侦听器在bean上设置一个值(决定要显示哪一个值),然后重新渲染该区域。JSF f:ajax监听器没有调用
我已经尝试在h:commandButton上的f:ajax,actionListener上使用监听器,在f:ajax上执行h:commandButton上的操作。没有工作。我试图调用的主题完全没有被调用 - 没有println(请看后面的内容)。
panelGroup正在重新呈现,这就是为什么我需要onevent属性,重新附加一些基于标题的JavaScript提示文本(我有一个涉及此问题的早期问题)。
的方法,我试图调用:
public void morePressed(AjaxBehaviorEvent e) {
easySearch = !easySearch;
System.out.println("Made it!");
}
不工作的JSF段(注意最后H:的commandButton正试图重新呈现panelGroup中):
<h:form>
<h:panelGroup id="switchSearchTexts">
<h:inputText accesskey="s" alt="Search" id="searchBoxPeople" title="Search Plebeians" valueChangeListener="#{peopleBean.simplePersonQuery}" size="25" rendered="#{peopleBean.easySearch}">
<f:ajax render="peopleDataTable" event="keyup" />
</h:inputText>
<h:inputText accesskey="s" alt="Search First Name" id="searchBoxFN" title="Search First Name" size="25" rendered="#{!peopleBean.easySearch}">
<f:ajax render="peopleDataTable" event="keyup" />
</h:inputText>
</h:panelGroup>
<div id="expandBox">
<h:inputText id="searchBoxLN" alt="Search Last Name" styleClass="hideToggle" title="Search Last Name" size="25" />
<h:inputText id="searchBoxAddress" alt="Search Address" styleClass="hideToggle" title="Search Address" size="25" />
</div>
<h:commandButton type="button" styleClass="moreButtonAsText" id="moreButtonAsText" value="▸More">
<f:ajax listener="#{peopleBean.morePressed}" render="switchSearchTexts" event="click" onevent="callFunctionAjaxRequest" />
</h:commandButton>
这是我附加到pageload上更多按钮的JavaScript(jQuery)。我给它并不是因为我认为它可以帮助,但我不知道这能以任何方式阿贾克斯听众的干扰:
$(function() {
textboxHint();
$('input[id$="moreButtonAsText"]').toggle(function(e) {
$(this).prop('value', '\u25c2Less');
$(".hideToggle").show(300);
}
, function() {
$(this).prop('value', '\u25b8More');
$(".hideToggle").hide(100);
$('input[id$="searchBoxAddress"]').prop('value', function() {
return $(this).prop('title');
});
$('input[id$="searchBoxAddress"]').blur();
});
});
我不知道。正如我所说的,我已经在h:commandButton上尝试了actionListener,其中有各种各样的appraoches,以及ajax上侦听器的各种方法。任何人都可以明白为什么听者不工作?
更新:
我最终什么事做,有一个答案之前,正在将一切显示和隐藏基于JavaScript,带的东西,如果他们没有JavaScript的最初隐藏我需要隐藏,等
但是我现在需要其他地方的f:ajax。
解决方法是在h:commandButton上取出event =“click”。我仍然现在知道这是为什么导致它打破,但嘿,无论工程。
我确实有callFunctionAjaxRequest,以及固定的ajax调用(并删除所有执行,因为我不需要它们)。 但是......奇怪的是,将事件=“点击”出来导致它工作。我想知道为什么离开它不工作? – twmb 2012-03-24 19:48:54
event =“click”是多余的,但不应该造成任何伤害...怪异的,你确定它没有引用错误的ID没有造成危害吗? – Daniel 2012-03-24 19:57:32
我正是这样的: h:commandButton>' 使用println in morePressed;它从未印过。以'event ='点击''出来到达println。我附加了一个jQuery切换到JavaScript文件中的按钮,但我不认为这会覆盖行为,并导致点击不起泡或什么;我没有任何传播停止。 –
twmb
2012-03-24 20:04:24