Jsf 将数字输入限制为小数点后的两个固定数字
我们的项目使用PrimeFaces 5.1。我需要限制用户输入数字类型。例如,用户只能输入123.12(小数点后有两位数字)。 我试图使用Jsf 将数字输入限制为小数点后的两个固定数字,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我们的项目使用PrimeFaces 5.1。我需要限制用户输入数字类型。例如,用户只能输入123.12(小数点后有两位数字)。 我试图使用,但问题是它定义的掩码是固定长度的。用户必须准确输入的掩码属性中定义的长度。PrimeFaces允许定义小数点后的位数并控制长度的正确方法是什么 更新: 我试图用inputNumber组件创建一个简单的页面。但不知何故,inputNumber中键入的任何值都将被视为null,因为它无法通过页面级别上所需的验证。 下面是xhtml。 <?xml vers
,但问题是它定义的掩码是固定长度的。用户必须准确输入
的掩码属性中定义的长度。PrimeFaces允许定义小数点后的位数并控制长度的正确方法是什么
更新:
我试图用inputNumber组件创建一个简单的页面。但不知何故,inputNumber中键入的任何值都将被视为null,因为它无法通过页面级别上所需的验证。
下面是xhtml。
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions">
<h:head>
<title>InputNumberTestingPage</title>
</h:head>
<h:body>
<h:form id="form">
<p:panel id="panel" header="Form" style="margin-bottom:10px;">
<p:messages id="messages" />
<h:panelGrid columns="3" cellpadding="5">
<p:outputLabel for="Name" value="Name: " />
<p:inputText id="Name" value="#{inputNumberTesting.name}" required="true" label="Name">
<f:validateLength minimum="2" />
</p:inputText>
<p:message for="Name" />
<p:outputLabel for="Salary" value="Salary:" />
<pe:inputNumber id="Salary" value="#{inputNumberTesting.salary}"
required="true" label="Salary" decimalPlaces="2" maxValue="9999"/>
<p:message for="Salary" />
</h:panelGrid>
</p:panel>
<p:commandButton value="Submit" update="panel" actionListener="#{inputNumberTesting.save}" style="margin-right:20px;" />
</h:form>
</h:body>
</html>
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
@ManagedBean(name = "inputNumberTesting")
@ViewScoped
public class InputNumberTesting {
private Object name;
private Object salary;
public Object getName() {
return name;
}
public void setName(Object name) {
this.name = name;
}
public Object getSalary() {
return salary;
}
public void setSalary(Object salary) {
this.salary = salary;
}
public void save() {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Name: "+getName()+"Salary: "+getSalary()));
}
}
可以在primefaces扩展库中使用InputNumber组件。首先您需要添加它的依赖项,然后您可以使用扩展名称空间,其用法应该如下
xmlns:pe="http://primefaces.org/ui/extensions"
<pe:inputNumber id="Input1" value="#{inputNumberController.input1}"/>
xmlns:pe=”http://primefaces.org/ui/extensions"
您可以自定义最小-最大数字、小数点、货币符号以及组件中存在的更多自定义选项。您可以从PrimeFaces Extension查看。“它对我来说很好用。”ForguesR我试着用inputNumber,但不知怎么的没有用。该值始终为空对不起,但我在您发布的内容中找不到任何错误。我已更新了问题区域。不太确定我做错了什么,因为在那个组件中似乎没有任何价值。有什么想法吗?不确定是什么问题,但请尝试将commandButton中的process属性设置为process=“@this panel”,并尝试使用支持bean中的Double/Float或BigDecimal作为目标值。谢谢,伙计,在我更改为Double之后,它就可以工作了。但有趣的是,只接受双倍而不是对象。