2012-06-02 53 views
1

我使用的是JSF 1.2RichFaces 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

+0

您的请求包含2个会话cookie。这看起来不正确,可能是您的问题的一个可能的原因。重新启动浏览器或清除cookie并重试。 – BalusC

+0

我曾尝试过,并重申了应用程序本身,但没有使用 –

+0

那么,通过所有可能的原因清单工作:http://stackoverflow.com/questions/2118656/hcommandlink-hcommandbutton-is-not-being-被调用可能的原因在迄今为止发布的代码中不可见。如果您无法根据列表找出问题,那么您需要编辑您的问题以包含真实的SSCCE而不是仅包含部分片段。 – BalusC

回答

2

你应该试试f:forma4j:form围绕着你的a4j:commandButton

+0

我做过,但没有任何事发生 –

+0

您可以在触发按钮后添加来自萤火虫的请求/响应吗? – Thor

+0

我已更新该问题,标题为 –