2012-07-19 2 views
1

.xhtml 파일의 JSF2 (아마도)로 업그레이드 한 후 IllegalArgumentExceptions을 생성하지만 실제로 이유를 찾을 수 없습니다. 로컬 JBoss (4.2.2)에서 응용 프로그램을 실행해도이 예외는 생성되지 않지만 디버그 데이터와 라이브 데이터의 차이와 관련 될 수 있습니다.JSF2로 업그레이드 한 후 사용자 정의 setter의 IllegalArgument 예외가

다음 스택 추적 내가 프로덕션 서버 로그에서 추출 할 수 있다고 생성됩니다

Caused by: javax.el.ELException: /xy/xy-subtemplate1.xhtml @131,45 value="#{someClass.someProperty}": java.lang.IllegalArgumentException 
    at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:101) 
    at javax.faces.component.UIInput.updateModel(UIInput.java:818) 
    ... 36 more 
Caused by: java.lang.IllegalArgumentException 
    at sun.reflect.GeneratedMethodAccessor1134.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at javax.el.BeanELResolver.setValue(BeanELResolver.java:108) 
    at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255) 
    at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281) 
    at org.apache.el.parser.AstValue.setValue(AstValue.java:114) 
    at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249) 
    at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93) 
    ... 37 more 

someClass가리스트에 걸쳐 반복되고 있으며 액세스하려면 다음 방법을 가지고 someProperty :

public int getSomeProperty() { 
    return this.getSomeRelatedEnum().ordinal(); 
} 

public void setSomeProperty(final int index) { 
    this.setSomeRelatedEnum(SomeRelatedEnum.fromOrdinal(index)); 
} 

어떻게하면 위에서 언급 한 IllegalArgumentException으로 연결될 수 있습니까?

+0

반복의 xhtml 또는 jsp의 프래그먼트를 게시 할 수 있으며이 속성이 호출되는 위치는 무엇입니까? – Gamb

답변

1

setter 메소드가 결국 EL이 제공하는 것과 다른 인수 유형을 예상 할 때 발생할 수 있습니다.

나는 그것이 EL의 하드/변환되지 않은 번호는 기본 int으로 long로 취급하지 않음으로써 사실에 관련이 있음을 추측 . intlong으로 변경하거나 <h:someInput converter="javax.faces.Integer">과 같이 입력 구성 요소에 명시 적 정수 변환기를 제공하십시오.

그런데 enum 자체를 직접 가져 오거나 설정하지 않는 이유는 무엇입니까? ordinal으로 열거 형을 가져 오거나 설정하는 것은 이상한 일입니다.

+0

enum을 (를) 주셔서 감사합니다. 이 코드는 제 것이 아니며 단지 문제가 있음을 발견했습니다. 그래서'someProperty'를 enum 타입으로 변경하고 enum으로 getter/setter를 만들겠습니까? 그저 다른 어떤 긴 것처럼, String? –

관련 문제