2013-08-01 49 views
0

爲什麼它不起作用whith regexp \ p {InCyrillic}? 我試過\ p {L}但它不起作用。 我的代碼在ZUL:zkoss textbox constraint =「/ p {InCyrillic} * /」

textbox id="box" hflex="1" constraint="/\p{InCyrillic}*/" 
+0

你想要什麼約束的地方你能簡單介紹一下 – 2013-08-02 04:39:49

+0

只有西裏爾字母。 – kotygoroshko

+0

我不認爲它會這樣工作,所以你必須在這裏給出一些正則表達式,因爲如果你在約束條件下寫英文,並不意味着它會帶英文字母。 – 2013-08-02 08:47:15

回答

0

實現自己的約束:

package com.upc.webcallcentr4zk.controller.constraints; 

import java.io.Serializable; 
import java.util.regex.Pattern; 
import org.zkoss.zk.ui.Component; 
import org.zkoss.zk.ui.WrongValueException; 
import org.zkoss.zul.Constraint; 
import org.zkoss.zul.Textbox; 

public class PatterenCostraints implements Constraint, Serializable { 

    private static final long serialVersionUID = 4052163775381888061L; 
    private Pattern pattern; 

    public PatterenCostraints(String pattern) { 
     this.pattern = Pattern.compile(pattern); 
    } 

    @Override 
    public void validate(Component comp, Object value) throws WrongValueException { 
     if (comp instanceof Textbox) { 
      String enteredValue = (String) value; 
      if (enteredValue.isEmpty()) { 
       throw new WrongValueException(comp, "Bla bla bla!"); 
      } else if (!pattern.matcher(enteredValue).matches()) { 
       throw new WrongValueException(comp, "Bla bla bla!"); 
      } 
     } 
    } 
} 

之後:

keywordBox.setConstraint(new PatterenCostraints("^(\\p{IsCyrillic}*)$")); 
+0

很好的實現! – Nikos