엘이 왜 나에게 괄호 사이의 매개 변수로 잘못된 개체를 제공합니까?
문제
상황은 다음과 같습니다.
Rich : A4J : Form의 DataTable에서 A4J : CommandLink를 만듭니다.
action="#{bean.myaction(myparameter)}"
이것은 문제없이 작동합니다.
그러나 Ajax 호출로 데이터 가능을 필터링하기 위해 양식을 다시 렌더링하면 값을 선택할 때 선택한 결과, 선택의 색인, 필터링 전 데이터의 잘못된 결과를 제공합니다.
어떤 아이디어?
5 분만에 올바른 솔루션을 제공해 주신 Zack에게 감사드립니다.
괄호 사이의 동작에서 매개 변수를 전달하는 것이 더 우아하지만 이봐 : 이것은 효과가 있다고 생각합니다. :)
정말 고마워.
추신 : 제목도 편집하고 있습니다.
해결책
사용해보십시오 :
<a4j:commandLink action="#{bean.myaction}">
<f:param name="myparameter" value="paramValue" />
</a4j:commandLink>
그런 다음 귀하의 작업에서 해당 매개 변수에 액세스하십시오. requestParameter("myparameter")
through the FacesContext
.
부수적으로, 이것은 Jboss el이 아니며, 통일 된 표현 언어 (EL)입니다. Sun에서 지정한대로 일반적으로 JSP/JSF의 특징 일뿐입니다.
다른 팁
잭의 답변 외에도 매개 변수로 메소드를 호출 할 수 있도록 EL 표현을 확장 해야하는 경우 El Functors 도서관:
action="#{bean.myaction$[myparameter].action}"
@datamodel로 주석이 달린 컬렉션을 사용하여 데이터가 채워져 있습니까? 그렇다면 필터링 될 때 컨텍스트에서 제거하여 다시 반복하십시오.
예를 들어.
//In filter method
Contexts.removeFromAllContexts("yourDataModelCollection");
DataTable을 a에 넣습니다 <a4j:region>
나를 위해 일했습니다. 이렇게하면 여전히 JBoss EL 매개 변수를 사용할 수 있습니다.