selectOneMenu转换器在方法内部更改事件之前调用

时间:2013-03-22 20:40:23

标签: java jsf primefaces converter

修改

我会以不同的方式提出这个问题,

这是我的代码

<p:remoteCommand name="setTab_#{ss.level}" action="#{planMediaControllerInternet.affecterLigneCalcul(ss)}"/>  
<p:selectOneMenu id="supportForRegieInternet" value="#{ss.supportInternet}"  converter="supportInternetConverter" onkeydown="setTab_#{ss.level}" onchange="setTab_#{ss.level}" >
                <f:selectItem itemLabel="-----"  />
                <f:selectItems value="#{planMediaControllerInternet.lstSupportForFournisseurItem()}" />
                <p:ajax event="valueChange" listener="#{planMediaControllerInternet.affecterLigneCalcul(ss)}" update="typePW,nbVisU,classAx,prestationForSupportInternet,supportForRegieInternet"/>
                                </p:selectOneMenu>

我希望在此代码中,方法affecterLigneCalcul在转换器的方法getAsObject之前被调用,这可能吗?

这是我的转换器

@FacesConverter(value="supportInternetConverter")
@RequestScoped
public class SupportInternetConverter implements Converter{
@Inject
RegieController regieController;
@Inject
SessionController sessionController;
@Inject
PlanMediaControllerInternet planMediaControllerInternet;

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
PlanMediaInternetLigneCalcul pmilc = planMediaControllerInternet.getPlanMediaInternetLigneCalculSelected();
RegieInternet regieInternet = pmilc.getRegieInternet();
if (regieInternet != null) {
    for(SupportInternet r : regieInternet.getLstSupportInternet()) {
    if(r.getNameSupport().equals(value)){
        return r;
    }
    }
}
    return null;
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
    if(value != null){
    SupportInternet r = (SupportInternet)value;
    return r.getNameSupport();
    }
    return "";
}

修改 问题不在于NullPointerException

修改

这是我的影响力Calcul函数

public void affecterLigneCalcul (PlanMediaInternetLigneCalcul tmpPlanMediaInternetLigneCalcul) {
planMediaInternetLigneCalculSelected = tmpPlanMediaInternetLigneCalcul;
}

0 个答案:

没有答案