Убедитесь, что все пути кода вызывает метод startForeground, например, код может генерировать исключение в методе onCreate вашего сервиса, который предотвращает вызов startForeground
@Override
public void onCreate() {
try{
}
catch(Exception e)
{
}
finally{
startForeground(1, notificationbuilder.build());
}
}
Просто привяжите входное значение к свойству Double
или лучше, BigDecimal
вместо String
.
private BigDecimal number; // Double can also, but beware floating-point-gui.de
<h:inputText value="#{bean.number}" />
JSF имеет встроенные преобразователи для тех типов, которые будут автоматически срабатывать. Вы можете настроить сообщение преобразователя, как показано ниже:
<h:inputText value="#{bean.number}" converterMessage="Please enter digits only." />
Вы можете использовать проверку JS
. Сначала вам необходимо определить функцию JS для проверки ввода
function validateInput(regexString) {
var theEvent = window.event || event;
var key = theEvent.keyCode || theEvent.which;
if (key >= 46) {
key = String.fromCharCode(key);
var regex = new RegExp("^" + regexString + "$");
if (!regex.test(key)) {
theEvent.returnValue = false;
if (theEvent.preventDefault) {
theEvent.preventDefault();
}
}
}
}
. Во-вторых, в вашем h: input, запишите onKeyPress событие и вызовите функцию
<h:inputText value="..." onKeyPress="validateInput('[0-9]*')/>
И она позволит вам вводить числа.
Вы можете легко расширить это использование в другом случае, когда вам нужно проверить whit other regex.
Обратите внимание, что это работает только с нажатием клавиши, если вы хотите захватить другое пользовательское событие, используйте соответствующий тег.
Cheers
<h:inputText onkeypress="if(event.which < 48 || event.which > 57) return false;"/>
- это короткий путь, если вы хотите принимать только целые числа.
Преимущество над type="number"
заключается в том, что вы даже не можете ввести нецифровое
onkeypress="if(event.which < 48 || event.which > 57) return false;else if(event.which === 13) myFunction()"
, но я все же предпочитаю поместить все на разделенную функцию
– Giovanne Afonso
18 May 2015 в 20:14
Если вы добавите это в свой xhtml
xmlns: pe = "http://primefaces.org/ui/extensions"
blockquote>и используйте inputext для чисел Primefaces Расширения, называемые pe: inputNumber, которые не только подтверждают ваши числа, но и десятичные знаки также могут быть более полными.
<pe:inputNumber value="#{beanTest.myValue}" thousandSeparator="" decimalSeparator="." decimalPlaces="0" />
Это работает для меня
onkeypress="if( (event.which < 48 || event.which > 57) ) return false;"
Попробуйте
<h:inputText>
<f:validateRegex pattern="\d*(.\d+)?"/>
</h:inputText>
Вот несколько разных опций:
@Digits
из проверки bean validation . <input type="number" />
Я думаю, что лучшие варианты либо с использованием проверки Bean, f: convertNumber или идет с HTML5, поскольку они являются самыми чистыми и дают вам наименее избыточный код.
@Digits
требует, чтобы вход был только числовым.
– Simon
14 October 2013 в 16:12
Попробуйте
<h:inputText value="SomeValue" converter="javax.faces.Double" />
double a = .123;
на 100% действителен в Java (для проверки он копирует эту строку в Java-коде). javax.faces.Double - стандартный JSF-конвертер, который охватывает Java double .
– Vasil Lukach
14 October 2015 в 14:12
Решение html5, кросс-браузер и клиентская сторона может быть
<script>
//<![CDATA[
$(document).ready(function(){
$("#someinputid\\:withcolon").attr('type', 'number');
});
//]]>
</script>
вам нужно ссылаться на ресурс jquery, если он неявно доступен, например простые грани