Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
validateRegex的动态模式不起作用,但静态版本不起作用_Regex_Jsf - Fatal编程技术网

validateRegex的动态模式不起作用,但静态版本不起作用

validateRegex的动态模式不起作用,但静态版本不起作用,regex,jsf,Regex,Jsf,我有JSF页面。我的目标是通过从数据库中获取模式来动态构建验证器 我下面的代码不工作。我是说regex失败了 <p:inputText value="#{basvuruBean.basvuru.sistem.tavsiyeEdilenID}" requiredMessage="Lütfen Tavsiye Edilen ID giriniz" validatorMessage="#{basvuruBean.basvuru.sistem.

我有JSF页面。我的目标是通过从数据库中获取模式来动态构建验证器

我下面的代码不工作。我是说regex失败了

<p:inputText value="#{basvuruBean.basvuru.sistem.tavsiyeEdilenID}" 
             requiredMessage="Lütfen Tavsiye Edilen ID giriniz"
             validatorMessage="#{basvuruBean.basvuru.sistem.tavsiyeEdilenIDHataMesaji}"
             rendered="#{basvuruBean.basvuru.sistem.tavsiyeEdilenIDRendered}">
    <f:validateRegex pattern="#{basvuruBean.basvuru.sistem.tavsiyeEdilenIDRegEX}" />
</p:inputText>
然后选择一个可更改系统对象的菜单

<p:selectOneMenu value="#{basvuruBean.basvuru.sistem}" converter="sistemConverter">
  <f:selectItems value="#{basvuruBean.sistemler}" var="s" itemLabel="#{s.sistemAdi}" itemValue="#{s}" />
  <p:ajax listener="#{basvuruBean.sistemChangeListener}" update="p2 genelbilgi" />
</p:selectOneMenu>

很难在代码中确定原因,因为它相对来说比较笨拙

事实上,
是一个视图构建时标记。因此,在其中引用视图范围的bean属性将导致创建一个全新的实例,该实例与在诸如
之类的UI组件中引用的实例不同。因此,实际上,您最终得到了两个备份bean实例,一个由
引用,另一个由
及其
引用。因此,如果您在一个bean实例中通过ajax操作regex模式,它将不会反映在另一个bean实例中

撇开可能的设计问题不谈,您可以使用from而不是
来解决特定的功能问题



这将在rendertime而不是buildtime期间解析属性。

您可以向我们展示您的支持bean吗?至少它的所有相关部分。我添加了更多的代码部分
import java.io.IOException;
import com.itextpdf.text.DocumentException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.FlowEvent;

@ManagedBean
@ViewScoped
public class BasvuruBean implements Serializable {

private Basvuru basvuru = new Basvuru();
private Sistem sistem;

private static final long serialVersionUID = 1L;
private String url;
private List<Sistem> sistemler = new ArrayList<Sistem>();
private SistemDAO sistemDAO = new SistemDAO();

    @PostConstruct
void initialiseSession() {
    FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    sistem=sistemler.get(0);
}

public BasvuruBean() {

    sistemler = sistemDAO.tumSistemler();


    this.basvuru.setSistem(sistem);
    this.basvuru.setSirketAdi("Şirket Adı");
    this.basvuru.setePosta("posta@sirket.com");

}


public void sistemChangeListener() {

    System.out.println(sistem.getSistemAdi());
    sistem.setKapsamaYaricapi(this.sistem.getKapsamaYaricapiDefault());
    this.sistem.setKapsamaYuksekligi(this.sistem.getKapsamaYuksekligiDefault());
    this.sistem.setFrekansMax(this.sistem.getFrekansMaxDefault());
    this.sistem.setFrekansMin(this.sistem.getFrekansMinDefault());
    this.sistem.setTavsiyeEdilenID(this.sistem.getTavsiyeEdilenIDDefault());
    this.sistem.setRunway(this.sistem.getRunwayDefault());
    this.sistem.setTrueRadiationDirection(this.sistem.getTrueRadiationDirectionDefault());
    this.sistem.setApproachCAT(this.sistem.getApproachCATDefault());
    this.sistem.setAntenVericiGucuDefault(this.sistem.getAntenVericiGucuDefault());
    this.sistem.setAntenYuksekligiAGL(this.sistem.getAntenYuksekligiAGLDefault());
    this.sistem.setFrekans(this.sistem.getFrekansDefault());
}
}
<p:selectOneMenu value="#{basvuruBean.basvuru.sistem}" converter="sistemConverter">
  <f:selectItems value="#{basvuruBean.sistemler}" var="s" itemLabel="#{s.sistemAdi}" itemValue="#{s}" />
  <p:ajax listener="#{basvuruBean.sistemChangeListener}" update="p2 genelbilgi" />
</p:selectOneMenu>
<o:validator validatorId="javax.faces.RegularExpression" pattern="#{basvuruBean.basvuru.sistem.tavsiyeEdilenIDRegEX}" />