JSF에서 URL에서 매개 변수를 가져 오는 올바른 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/22018409

  •  21-12-2019
  •  | 
  •  

문제

여기 내 JSF 페이지 :

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core">

    <f:metadata>  
        <f:viewParam name="id" value="#{productDetailBean.id}" />  
    </f:metadata> 

    <h:head>
        <title>Facelet Title</title>
    </h:head>

    <h:body>
        <h:outputText value="1=#{productDetailBean.id}" />
        <br/>
        <h:outputText value="2=#{param['id']}" />
        <br/>
        <h:outputText value="3=#{productDetailBean.param}" />
    </h:body>
</html>
.

및 bean

import java.io.Serializable;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@ViewScoped
public class ProductDetailBean implements Serializable{  

    private String id;  

    public String getParam(){
        FacesContext context = FacesContext.getCurrentInstance();
        Map<String, String> paramMap = context.getExternalContext().getRequestParameterMap();
        String projectId = paramMap.get("id");
        return projectId;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
} 
.

다음과 같이 매개 변수를 전달할 때 : / getshipment.xhtml?id=123
출력

을 얻습니다

1=
2= 123
3= 123

두 번째 및 세 번째 방법이 잘 작동합니다. 왜 첫 번째가 작동하지 않는 이유는 무엇입니까?매개 변수를 가져 오는 올바른 방법은 무엇입니까?

도움이 되었습니까?

해결책

glassfish 4로 적어도 2.2.2로 가십시오. 4. 이전 2.2.x Mojarra 릴리스는 새로운 http://xmlns.jcp.org/jsf/ JSF 네임 스페이스와 잘 알려진 호환성 문제가 있습니다.

참조 :

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top