複合主キーを持つエンティティのコンバーターをどのように作成しますか?
`\edit_representative.xhtml?emp_id=12345&project_id=45 のような URl でエンティティを編集したい
私はOmnifacesを使用しているので、単一の主キーにはこのようなものがあります
<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." />
しかし、従業員が取り組んでいる project_id をコンバーターに渡すにはどうすればよいですか
編集
BalusCの回答に基づいて、2番目のオプションを使用し、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;
そしてフェイスレットで
<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>