入力に「、」各4つの数字を入力するにはどうすればよいですか。次のようなものがあります。
<p:inputMask mask="9999, 9999" placeHolder="_"/>
しかし、「N」の値が必要なので、これを行う方法がわかりません。
入力に「、」各4つの数字を入力するにはどうすればよいですか。次のようなものがあります。
<p:inputMask mask="9999, 9999" placeHolder="_"/>
しかし、「N」の値が必要なので、これを行う方法がわかりません。
入力マスクを使用して入力を制限できます。これは、ユーザーがシステムにデータを入力した時点で制限されます。制限数なしで設定することはできません。
代わりにコンバーターを使用することをお勧めします。
xhtml
<h:form>
<p:inputText id="input"
converter="numberConverter"
value="#{inputTextView.numberInput}" >
<p:ajax process="input"
update="input"
event="blur"/>
</p:inputText>
</h:form>
マネージドビーン
@SessionScoped
@ManagedBean(name = "inputTextView")
public class InputTextView {
private String numberInput;
public String getNumberInput() {
return numberInput;
}
public void setNumberInput(String numberInput) {
this.numberInput = numberInput;
}
}
コンバータ
import java.io.Serializable;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
/**
*
* @author Wittakarn
*/
@FacesConverter("numberConverter")
public class NumberConverter implements Serializable, Converter {
public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
return string.replaceAll(",", "");
}
public String getAsString(FacesContext fc, UIComponent uic, Object o) {
String resp = "";
DecimalFormat decimalFormat;
if (o != null) {
decimalFormat = new DecimalFormat("#,####");
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
try {
resp = decimalFormat.format(Double.parseDouble(o.toString()));
} catch (Exception ex) {
ex.printStackTrace();
}
}
return resp;
}
}