아마도 누군가가 나를 해결할 수 있습니다. 사용자가 목록에서 항목을 선택하고 결과를 기반으로 링크를 다시 렌더링하는 즉시 작업을 수행해야하는 h : selectOneMenu가 있습니다.selectOneMenu onchange를 기반으로 구성 요소를 다시 렌더링하십시오.
<h:selectOneMenu value="#{backingBean.itemSelected}" valueChangeListener="#{backingBean.methodThatDoesStuff}" onchange="submit()" >
<s:selectItems var="_items" value="#{backingBean.itemList}"
label="#{_items.Name}" />
<s:convertEntity />
</h:selectOneMenu>
내 가정은 사용자가 항목을 선택하면 그것은 백업 빈의 필드를 채우고 다음 methodThatDoesStuff를 실행하는 것이라고했다. 하지만 그건 일어나지 않습니다. 메소드가 호출 될 때까지 backingBean.itemSelected가 설정되지 않습니다. 이벤트를 가져 와서 직접 메서드에서 사용할 수 있습니다.
public void methodThatDoesStuff(ValueChangeEvent event){
Item item = (Item)event.getNewValue();
.... do stuff, set a flag to display link later
}
이 방법이 효과적입니다.
그러나 그것이 null이됩니다 1 시간 있도록 이전 값으로 설정 내 aComponent의를, 잎, 다음 마지막 itemSelected (그래서 난 항상 뒤에 하나 있어요에 따라 설정을 변경합니다 :
public void methodThatDoesStuff(){
Item item = this.itemSelected;
.... do stuff, set a flag to display link later
}
나는 시도했다 :.?
<h:selectOneMenu value="#{backingBean.itemSelected}" >
<s:selectItems var="_items" value="#{backingBean.itemList}" label="#{_items.Name}" />
<a:support event="onchange" ajaxSingle="true" reRender="aComponent" action="#{backingBean.methodThatDoesStuff}" />
<s:convertEntity />
</h:selectOneMenu>
하지만 ValueChangeEvent 여부 사용 여부를 작동하지 않는 이벤트가 현재 선택한 항목을 얻을 수있는 유일한 방법은 객체를 사용 이 JSF 1.2 심 2
입니다
응용 프로그램 이벤트 단계 전에 바운드 속성이 채워지지 않는 이유가 확실하지 않습니다. 유효성 검사 오류가 발생하여 값이 업데이트되지 않을 수 있습니다. 그럼에도 불구하고 각 단계에서 발생하는 문제에 대한 자세한 내용은 [BalusC Debug PhaseListener] (http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html)를 구현하십시오. –
'# '이 (가) 작업 속성에 없습니다. 이것은 빨간색 청어인가요? – BalusC
미안하지만 BalusC, 오타입니다. – gebuh