JSF + Pretty Faces

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.