簡體   English   中英

CommandButon的actionListener不起作用

[英]CommandButon 's actionListener not working

我在ah:selectOneMenu中選擇一個項目后,不會調用commandButton中的mi actionListener,只有當我在selectOneMenu中沒有任何選擇的情況下按下按鈕時,它才起作用。您可以在下面看到我的代碼:

<h:form id="formBtnBusquedaAnomalias">
                <table>
                    <tr>

                        <td>
                                <h:outputLabel id="idEstatusAnomalias" value="Estatus anomalias." />                                     
                                <h:selectOneMenu id="selectOneMenuEstatusAnomalias" 
                                    value = "#{busquedaAnomaliasManageBean.selectedEstatusAnomaliaVO}" >
                                    <f:converter converterId="estatusAnomaliaConverter"/>
                                    <f:selectItem itemLabel="Select one" />
                                    <f:selectItems value="#{busquedaAnomaliasManageBean.lstEstatusAnomaliaVOs}" var="estatusAnomalia"
                                        itemLabel="#{estatusAnomalia.descripcionEstatusAnomalia}" />
                                </h:selectOneMenu>                      
                        </td>

                    </tr>
                    <tr>
                        <td>    
                            <p:commandButton value="Buscar anomalias."
                                    actionListener="#{busquedaAnomaliasManageBean.buscarAnomalias()}" />
                        </td>
                    </tr>
                </table>
            </h:form>

轉換器類別:

@FacesConverter(value = "estatusAnomaliaConverter")
public class EstatusAnomaliaConverter implements Converter{

@Override
public Object getAsObject(FacesContext ctx, UIComponent component, String value) {
    EstatusAnomaliaVO estatusAnomaliaVO = new EstatusAnomaliaVO();
    estatusAnomaliaVO.seDescripcionEstatusAnomalia(value);
    return estatusAnomaliaVO;
}

@Override
public String getAsString(FacesContext ctx, UIComponent component, Object object) {
    String temp = "";
            if(!object == null)
            {
                 temp = object.toString();
            }
    return temp;
}

}

ManageBean:

@ManagedBean(name=ConstantesManageBeans.MANAGE_BEAN_BUSQUEDA_ANOMALIAS)
@RequestScoped
public class BusquedaAnomaliasManageBean implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -1955257440354260445L;


public void buscarAnomalias(){
             //...some code here
}
]

您的buscarAnomalias方法未遵循ActionListener方法的簽名。 這是簽名:

public void actionListener(ActionEvent event) {
    // ...
}

為了使其工作,只需將ActionEvent參數添加到您的方法中:

public void buscarAnomalias(ActionEvent event) {
    //...some code here
}

如果您是我,我將使用action而不是actionListener來執行托管bean操作:

<p:commandButton value="Buscar anomalias."
   action="#{busquedaAnomaliasManageBean.buscarAnomalias()}" />

請注意,使用這種方法,您無需將ActionEvent event參數添加到您的方法中。

更多信息:

代碼中的另一個問題是,當檢索所選項目的值時, FacesConverter失敗。 這是因為您尚未在<f:selectItems>設置itemValue

<h:selectOneMenu id="selectOneMenuEstatusAnomalias" 
    value="#{busquedaAnomaliasManageBean.selectedEstatusAnomaliaVO}">
    <f:converter converterId="estatusAnomaliaConverter"/>
    <f:selectItem itemLabel="Select one" />
    <f:selectItems value="#{busquedaAnomaliasManageBean.lstEstatusAnomaliaVOs}"
         var="estatusAnomalia" itemValue="#{estatusAnomalia}"
         itemLabel="#{estatusAnomalia.descripcionEstatusAnomalia}" />
</h:selectOneMenu>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM