Tôi gặp sự cố khi xác thực số <p:inputText>
và cập nhật nội dung của nó.Bản cập nhật JSF của Primefaces sau khi xác nhận không thành công, không hoạt động
Về cơ bản khi xác thực inputText thất bại, nó không bao giờ được cập nhật lại.
Dưới đây là một ví dụ đơn giản để làm rõ:
Các Facelet:
!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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<body>
<h1>Test</h1>
<h:form id="list" prependId="false">
<ul>
<li>Element 1 
<p:commandLink action="#{Test.assignElement}" update="detail_value">
<f:setPropertyActionListener target="#{Test.currentElement}" value="1" />
Assign
</p:commandLink>
</li>
<li>Element 2 
<p:commandLink action="#{Test.assignElement}" update="detail_value">
<f:setPropertyActionListener target="#{Test.currentElement}" value="2" />
Assign
</p:commandLink>
</li>
</ul>
</h:form>
<h:form id="detail" prependId="false">
<p:inputText value="#{Test.element}" id="detail_value" required="true" styleClass="#{Faces.messagesFor['detail_value'] ? 'border:1px solid red' : ''}">
<p:ajax event="blur" update="detail_value"></p:ajax>
</p:inputText>
</h:form>
</body>
</html>
Các thử nghiệm đậu:
package com.easydevel.test;
public class Test {
private String currentElement;
private String element;
public String getCurrentElement() {
return currentElement;
}
public void setCurrentElement(String currentElement) {
this.currentElement = currentElement;
}
public String getElement() {
return element;
}
public void setElement(String element) {
this.element = element;
}
public String assignElement(){
setElement(getCurrentElement());
return "";
}
}
Nếu bạn click vào commandLinks dưới "Element" s đầu vào trường được cập nhật, nhưng khi xác nhận không thành công (chỉ cần để trống văn bản đầu vào và nhấp vào bất kỳ phần nào khác của trang), đường viền của đầu vào chuyển sang màu đỏ. Sau đó nó không bao giờ được cập nhật một lần nữa khi nhấp vào commandLinks đã đề cập ở trên.
Bất kỳ ý tưởng nào?