2013-12-24 3 views
1

두 개의 JSF 페이지 : A.xhtml과 B.xhml이 있습니다.h : commandLink에서 POST 요청에 매개 변수를 추가하려면 어떻게해야합니까?

A.xhtml : 콩

<html ...> 
    <h:body> 
    <h:form> 
     <h:commandLink value="To B page" action="#{bean.goToB}"> 
      <f:param name="aURL" value="A.xhtml"/> 
     </h:commandLink> 
    </h:form> 
    </h:body> 
</html> 

:

@ManagedBean 
@ViewScoped 
public class Bean { 
    public String goToB(){ 
     //some logic... 
     return "B.xhtml"?faces-redirect=true"; 
    } 
} 

및 B.xhtml : 링크 위에 표시된

<html ...> 
    <h:body> 
    <f:metadata> 
     <f:viewParam name="aURL"/> 
    </f:metadata> 

    <h:link value="To A page" outcome="#{aURL}"/> <----- this link is disabled 

    </h:body> 
</html> 

을 사용할 수, 비활성 상태입니다. 그것은 단순한 레이블입니다. B.xhtml에서 A.xhtml로 돌아갈 수없는 이유는 무엇입니까? 실수는 어디 있습니까?

+0

'name = "aURL"'은 매개 변수를 아무 것도 바인딩하지 않습니다. 그냥 이름을 지어줍니다. 요청에서 명명 된 매개 변수를 선택하는'param.aURL'을 원한다. – kolossus

답변

0

내가, 내가 JSF 페이지의 이름으로 그렇게 실수를 죄송하게하고있어 제거 (나는 page.xhtml.xhtml을 씁니다). 내가 link에 결과에서 XHTML 확장을 제거 할 필요는 없습니다

, (내가 f:metadata을 제거 할 필요는 없습니다 그리고 난 도움을

감사의 모두 (내가 #{aURL}을 사용할 수 있습니다) #{param.aURL}을 사용할 필요가 없습니다 특히 Cesar Loachamin과 kolossus의 경우).

2

기본적으로 올바른 결과를 전달하지 않아서입니다. 먼저 유효한 결과를 xhtml 확장명없이 페이지의 이름으로 지정하면 링크로 렌더링됩니다.

먼저 동작 방법 또는 결과를 h:link에 반환하는 페이지의 이름은 xhtml 확장자가 아니어야하므로 Page1.xhtml이라는 작업이 Page1입니다. xhtml 확장자를 제거하십시오.

두 번째 명령 링크에 f:param을 사용하면 요청의 매개 변수가됩니다. 따라서 faces-redirect을 사용하여 다른 페이지로 리디렉션하면 브라우저가 새 요청을하기 때문에 값이 손실되므로 faces- 리디렉션.

그리고 마지막으로 f:param 이렇게 미리 정의 된 빈 param 사용에서 값을 전송받을 :

<h:link value="To A page" outcome="#{param.aURL}"/> 

을 그리고 f:metadata

관련 문제