2013-10-08 4 views
1

Primefaces 3.5.16, JBoss 7.2.0, PE 0.7.1, Mojara 2.1.26, WELD-000900 1.1.10 (최종) Web.xml에는 몇 가지 구성 요소 인 faces- config에 언어 번들이 정의되어 있습니다.OmniFaces 1.6.1의 필수 필드

<p:dialog> 

    <h:form> 
    <p:tabView binding="#{tabViewEL}"> 
    <p:messages autoUpdate="true"/> 
    <p:tab title="tab1"> 

    <p:inputText value="#{bean.value1}" required="true" /> 
    <p:inputText value="#{bean.value2}" /> 
    <p:selectOneMenu value="#{bean.value3}"> 
     <f:selectItems value="#{bean.items1}"></f:selectItems> 
    </p:selectOneMenu> 
    </p:tab> 
    <p:tab> ... </p:tab> 
    </p:tabView> 

    <p:commandButton value="ok" oncomplete="checkAndHide(xhr, status, args);" action="#{bean.action()}"/> 
    </h:form> 

</p:dialog> 

내가 "확인"을 클릭하면 나는 그것을 잘 기능 OmniFaces V 1.5 또는 1.6을 사용하고 있습니다 : tabview :

나는 약간의 입력 필드 및 P와 대화를 다음했다.. 1.6.1을 사용하는 경우 모든 필수 필드 (및 null 선택 항목이없는 p : selectOneMenu)는 빨간색으로 표시되고 "값은 필요합니다." 유효성 검사 오류없이 1.6.1을 어떻게 사용할 수 있습니까?

편집 : 나는 예를 만들려고했지만 나는 응용 프로그램의 또 다른 호기심 행동을 발견했습니다. OmniFaces 1.6에서는 제대로 작동하지만 1.6.1에서는 입력 필드가 값으로 채워지지 않습니다.

OmnitestBean.java 
import java.io.Serializable; 

import javax.annotation.PostConstruct; 
import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 

@Named 
@SessionScoped 
public class OmnitestBean implements Serializable{ 
private Integer value1 = 12; 
private Integer value2 = 3; 

public OmnitestBean(){ 
    System.out.println("Constru"); 
} 

@PostConstruct 
public void a(){ 
    value1 = 14; 
    value2 = 30; 
    System.out.println("in postconstruct"); 
} 

public Integer getValue1() { 
    return value1; 
} 

public void setValue1(Integer value1) { 
    this.value1 = value1; 
} 

public Integer getValue2() { 
    return value2; 
} 

public void setValue2(Integer value2) { 
    this.value2 = value2; 
} 

public void action(){ 
    System.out.println("In action"); 
} 

} 

omnifaces.xhtml는 : BalusC는 정수 계산기 함께 할 수있는 뭔가가 그의 주석에서 언급

<!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" 
xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
xmlns:pe="http://primefaces.org/ui/extensions"> 
<h:head /> 
<body> 
<h:form id="editPopForm"> 
    <p:messages id="messages2" autoUpdate="true"></p:messages> 
    <p:inputText value="#{omnitestBean.value1}" required="true" /> 
    <p:inputText value="#{omnitestBean.value2}" /> 

    <p:commandButton process="@form" action="#{omnitestBean.action()}" value="OK" 
     update="@form" id="editFormOkButt" /> 
</h:form> 

+0

이것은 이상합니다. 그것을 볼 것입니다. 그건 그렇고, 그게 ''일까요? ""에 수정하지 않고 복사 할 수있는 방식으로 코드를 게시하십시오. 'checkAndHide'의 유무에 관계없이. – BalusC

+0

죄송합니다. 재현 할 수 없습니다. 진정한 SSCCE (비어 있지 않은 수정/스터 빙을하지 않고도 빈 운동장 WAR 환경에서 복사 만 할 수있는 코드)을 게시하십시오. – BalusC

+0

감사합니다! 시도해 보겠습니다. 불행히도 원래 형식으로 내 코드를 보낼 수 없습니다. – Tony

답변

1

으로. 다음과 같은 더미 정수 변환기가 있었는데 프로젝트의 어딘가에 숨겨져있었습니다.

@FacesConverter(value = "someDummyConverter") 
public class SomeDummyConverter extends IntegerConverter { 
public Object getAsObject(FacesContext context, UIComponent component, 
     String value) { 
    Integer intValue = (Integer) super.getAsObject(context, component, value); 
    return intValue; 
} 

@Override 
public String getAsString(FacesContext context, UIComponent component, Object o) { 
    return null; 
} 

}

내가 OmniFaces 1.5 또는 1.6이 변환기를 사용하는 경우가 호출되지 않았습니다. OmniFaces 1.6.1, 1.6.2, 1.6.3에서는 변환기가 호출되었습니다. 변환기를 삭제하면 문제가 사라집니다.