我使用的是JSF 1.2
和RichFaces 3.3.3
,我有一个很奇怪的问题,代码的作用是将媒体项的名称进行搜索并将其放入backing bean属性searcTitle中,用户单击搜索按钮onSearch
动作侦听器填充结果列表。JSF动作监听器不叫
而这里的代码
<rich:panelBar>
<rich:panelBarItem>
<rich:tabPanel>
<rich:tab label="Media">
<h:panelGrid columns="1">
<h:panelGrid columns="2">
<h:inputText value="#{media.searchTitle}"/>
<a4j:commandButton value="Search" actionListener="#{media.onSearch}"/>
</h:panelGrid>
<a4j:outputPanel id="mediaSearchResults" ajaxRendered="true">
<rich:dataTable value="#{media.results}" var="item">
<h:column>
<h:outputText value="#{item.title}"/>
</h:column>
</rich:dataTable>
</a4j:outputPanel>
</h:panelGrid>
</rich:tab>
</rich:tabPanel>
</rich:panelBarItem>
</rich:panelBar>
和背bean代码
private String searchTitle="";
private List<MediaItem> results;
public void setSearchTitle(String title){
getLogger().log(Level.INFO,"At the setter of the search title string");
this.searchTitle = title;
}
public String getSearchTitle(){
return searchTitle;
}
//Setter and getter for the results list;
//Action Listener
public void onSearch(ActionEvent evt){
getLogger().log(Level.INFO,"At the actionListener");
//Some function that searches and populates the results list
populateResults();
}
现在的问题是,每当我点击搜索按钮,操作监听器永远不会被调用,虽然在考察每次点击该请求都会向服务器发送一个请求,但动作侦听器本身不会被触发。
有没有人有线索为什么我有这个问题?我是这个初学者,所以请保持简单。
在此先感谢。
下面是从萤火虫的Reposne /请求头
响应头
Ajax-Response true
Cache-Control no-cache, must-revalidate, max_age=0, no-store
Content-Type text/xml;charset=UTF-8
Date Sat, 02 Jun 2012 16:03:13 GMT
Expires 0
Pragma no-cache
Server Sun GlassFish Enterprise Server v2.1.1
Transfer-Encoding chunked
X-Powered-By Servlet/2.5, JSF/1.2
请求头
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en,ar;q=0.7,en-us;q=0.3
Connection keep-alive
Content-Length 17986
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Cookie JSESSIONID=de975352b3adc4f59d57006755ea; JSESSIONID=de682f835c0fa928413ba7e5f59d; form:tree-hi=form:tree:applications:enterpriseApplications
Host localhost:8080
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
和链接到响应的XML有效载荷http://justpaste.it/10uh
您的请求包含2个会话cookie。这看起来不正确,可能是您的问题的一个可能的原因。重新启动浏览器或清除cookie并重试。 – BalusC
我曾尝试过,并重申了应用程序本身,但没有使用 –
那么,通过所有可能的原因清单工作:http://stackoverflow.com/questions/2118656/hcommandlink-hcommandbutton-is-not-being-被调用可能的原因在迄今为止发布的代码中不可见。如果您无法根据列表找出问题,那么您需要编辑您的问题以包含真实的SSCCE而不是仅包含部分片段。 – BalusC