リクエストパラメータを使用して詳細ビューを開く
質問
myfaces と richfaces を使用してシンプルなマスター/ディテールを作成しました。rich:dataTable 内の h:commandLink をクリックすると、ユーザーは詳細ビューを開いてエンティティを編集できます。
ここで、ユーザーが詳細ビューを直接開くことができる URL を作成したいと思います。通常、これを行うには、/detail.jsp?id=12 のような URL を作成しますが、JSF でこれを実現するにはどうすればよいでしょうか?
解決
リンクコントロールのパラメーターを使用してURLを作成できます:
<h:outputLink value="reqscope.faces">
<f:param name="id" value="#{row.id}" />
<h:outputText value="link" />
</h:outputLink>
ターゲットページで、式言語を直接使用するかマネージドBeanを介して、パラメータマップからIDを読み取ることができます。
表示:
<f:view>
id= <h:outputText value="#{param['id']}" />
<br />
id= <h:outputText value="#{lookupBean.id}" />
</f:view>
Bean:
public class LookupBean implements Serializable {
public String getId() {
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext extContext = context.getExternalContext();
Map<String, String> params = extContext.getRequestParameterMap();
return params.get("id");
}
}
faces-config.xmlの宣言:
<managed-bean>
<managed-bean-name>lookupBean</managed-bean-name>
<managed-bean-class>reqscope.LookupBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
他のヒント
a4j:commandlinkを使用して、詳細ビューBeanに詳細を表示するエンティティのIDを最初に渡します。そして、document.locationを使用してビューにナビゲートします。
<a4j:commandLink action="#{detailviewBean.setDetailID(entity.someid)}" value="#{entity.someid}" oncomplete="document.location='/app/detailview.seam'"/>
JSF 1.2 を使用している場合は、 f:setPropertyActionListener を使用できます。
<h:commandLink action="#{reqscope.faces}">
<h:outputText value="link"/>
<f:setPropertyActionListener
value="#{id}"
target="#{lookupBean.id}"/>
</h:commandLink>
所属していません StackOverflow