2014-06-16 2 views
1

복합 기본 키가있는 엔티티에 대해 변환기를 작성하는 방법은 무엇입니까?복합 기본 키가있는 엔티티에 대해 다중보기 매개 변수를 변환기에 전달

가 나는 URL로 개체를 편집 할 같은 `\ edit_representative.xhtml? EMP_ID = 12345 & PROJECT_ID = 내가 Omnifaces을 사용하고 45

그래서 난 하나의 기본 키

을 위해이 같은 뭔가를
<o:viewParam name="emp_id" value="#{projectRepEdit.projectRep}" 
converter="#{projectRepConverter}" 
converterMessage="Bad request. Unknown Project Representative." required="true" 
requiredMessage="Bad request. Please use a link from within the system." /> 

하지만 난 어떻게 직원이 컨버터

편집

0123에 작동하고 PROJECT_ID을 통과 할 BalusC의 답변에 따라

나는 내 projectRepConverter 변환기

String project_id = (String) component.getAttributes().get("project_id"); 
String emp_id= (String) component.getAttributes().get("emp_id"); 

ProjectRep prjRep = prjRepRepository.getByEmpIdAndProjectId(emp_id,project_id); 
return prjRep; 

에 다음과 facelet

<f:metadata> 
<o:viewParam name="project_id" value="#{projectRepEdit.project}" 
    converter="#{projectConverter}" 
    converterMessage="Bad request. Unknown Project." required="true" 
    requiredMessage="Bad request. Please use a link from within the system." /> 

<o:viewParam name="badge" value="#{projectRepEdit.projectRep}" 
    converter="#{projectRepConverter}" 
    converterMessage="Bad request. Unknown Project Rep." required="true" 
    requiredMessage="Bad request. Please use a link from within the system."> 
    <f:attribute name="project_id" value="#{param.project_id}" /> 
    <f:attribute name="emp_id" value="#{param.emp_id}" /> 
</o:viewParam> 

답변

2

어느 쪽도 아니 <f:viewParam>이나 <o:viewParam> 복용 지원하는 여러 매개 변수에 두 번째 옵션을 사용하고 있습니다. 매개 변수를 수동으로 가져와야합니다.

  1. 을 어느 컨버터에 요청 매개 변수로 잡아 : 나는이 두 가지 기본 방법을 생각할 수

    String project_id = FacesLocal.getRequestParameter(context, "project_id"); 
    

  2. 또는 구성 요소 속성으로 전달합니다

    <o:viewParam ...> 
        <f:attribute name="project_id" value="#{param.project_id}" /> 
    </o:viewParam> 
    

    변환기에서 다음과 같이 가져올 수 있습니다.

    String project_id = (String) component.getAttributes().get("project_id"); 
    

선택하는 방법 은 컨버터의들이 의도 재사용에 따라 달라집니다. 예를 들어, project_id 속성 이름을 compound_key 정도로 바꾸고 재사용 할 수 있습니다.

+0

옵션 # 2는 내가 수행 한 작업을 성취했습니다. – jeff