Bom, o problema é que eu não estou conseguindo criar um path tipo:
/grupo/20
Pois eu tenho o seguinte código:
<p:commandButton id="edit" icon="ui-icon-pencil"
action="#{grupoController.getFormPath}" ajax="false">
<f:setPropertyActionListener value="#{entity}"
target="#{grupoController.entity}" />
</p:commandButton>
Ou seja, quando clica, ele faz o setPropertyActionListener…
E no meu pretty-config
<url-mapping id="grupoEditor">
<pattern value="/grupo/#{ grupoController.entity.id }" />
<action></action>
<view-id value="/view/grupo/form.jsf" />
</url-mapping>
ele redireciona certo, mas não carrega o objeto, pois ele é carregado quando clica no botão.
Alguém já solucionou este problema?
No seu action (pretty-config), você não está fazendo nenhum ação. Segue um exemplo abaixo:
Configuração do pretty-config:
<url-mapping id="url-exibir-grupo">
<pattern value="/grupo/exibir/#{codigo : grupoBean.codigoGrupo}"></pattern>
<view-id value="/pages/grupo.jsf" />
<action onPostback="false">#{grupo.loadInstance()}</action>
</url-mapping>
Note que chamamos a ação #{grupo.loadInstance()}.
Como deve ser ajustado o botão:
<p:commandButton id="editarProduto" action="pretty:url-exibir-grupo" icon="ui-icon-pencil" title="#{msg.label_editar_title}" update="tableGrupos">
<f:setPropertyActionListener target="#{grupoBean.codigoGrupo}" value="codigo_do_grupo" />
</p:commandButton>
Código da classe GrupoBean, que é chamado na ação:
public void loadInstance() {
setModoTela(ModoTela.Exibir);
this.grupo = grupoService.findGrupo(Long.parseLong(getCodigoGrupo()));
}
Tanto pelo botão, quanto pela URL localhots:8080/suaAplicacao/grupo/exibir/12, será exibido o grupo na página.