2012-05-04 1 views
2

이렇게 쓸 수 있습니까?JSF-ViewParameter의 이름을 EL 표현식으로 지정할 수 있습니까?

<f:metadata> 
    <f:viewParam name="#{constantsBean.viewParameterNameForIds}" value="#{displayBean.technicalId}" /> 
</f:metadata> 

나는 항상 myfaces 오류가 발생하며 뷰 매개 변수 이름의 EL 표현식에서 비롯된 것 같습니다.

편집 : 전체 스택 트레이스는 다음과 같습니다 Btw는

java.lang.NullpointerException 
at org.apache.myfaces.util.AbstractAttributeMap.get(AbstractAttributeMap.java:94) 
at javax.faces.component.UIViewParameter.decode(UIViewParameter.java:78) 
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176) 
at javax.faces.component.UIInput.processDecodes(UIInput.java:178) 
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1170) 
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1170) 
at javax.faces.component.UIViewRoot._processDecodesDefault(UIViewRoot.java:1316) 
at javax.faces.component.UIViewRoot.access$400(UIViewRoot.java:75) 
at javax.faces.component.UIViewRoot$ApplyRequestValuesPhaseProcessor.process(UIViewRoot.java:1379) 
at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1282) 
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:718) 
at org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:34) 
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171) 
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
at org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.execute(CodiLifecycleWrapper.java:95) 
at org.apache.myfaces.extensions.validator.core.startup.ExtValLifecycleWrapper.execute(ExtValLifecycleWrapper.java:61) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1147) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:722) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:449) 
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92) 
at gid.common.technical.filter.InboundProcessingFilter.doFilter(InboundProcessingFilter.java:46) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:919) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1016) 
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) 
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:883) 
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1659) 
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) 
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) 
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1648) 

. WebSphere 8, Myfaces Codi 및 ExtVal과 함께 제공되는 MyFaces를 사용하고 있습니다.

+0

오류 또는 스택 추적을 넣을 수 있습니까 –

+0

물론, 그렇습니다. 나는 주말 후에 그것을 할 것이다. –

+0

@ojota 예외에 대한 스택 추적을 추가했습니다 –

답변

3

<f:viewParam> documentation는하여 name 속성에 대해 다음 말한다 :

Name | Required | Request-Time | Type 
-----+----------+--------------+------------------------------------------------- 
name | true  | false  | javax.el.ValueExpression 
    |   |    | (must evaluate to java.lang.String)  

그것은 javax.el.ValueExpression하지 java.lang.String 말한다 (당신은 참으로 가치 표현식을 허용하지 않습니다 id 속성에 참조로 같은). 그래서 EL을 지원합니다.

저는 MyFaces를 사용하지 않지만 Mojarra에 대한 테스트를 수행했으며 저에게 적합합니다. 나는 당신이 어떤 이유로 정확한 정보를 제공하지 못하는 것처럼 당신이 가지고있는 오류가 정확히 무엇인지 모르겠다. 그래서 당신의 질문에 언급하지 않았다. 오류 메시지에는 대개 문제의 답이 들어 있습니다. 전체 오류 메시지를 게시하면 평신도 용어로 메시지를 설명 할 수 있으므로 을 이해하면 오류가 발생하므로 해결 방법이 명확 해집니다. 예를 들어 MyFaces에서 전혀 다른 원인이나 버그가있을 수 있습니다.

+0

고마워요! 다시 시도해보고 오류에 대한 조사를 조금 더 할 것입니다. –

+0

MyFaces 친구들에게보고하겠습니다. – BalusC

+0

컨테이너 공급자에 대한 서비스 요청을 만들었습니다. 무슨 일이 일어날 지 봅시다. –