Как обработать 'query-param' симпатичных лиц в компоненте поддержки?

У меня есть список пользователей (dataTable со ссылкой на userId, которая указывает на /user/view/{userId}). При нажатии на эту ссылку userId браузер, как и ожидалось, перенаправляется на страницу просмотра.

У меня есть страница, которая принимает шаблон URL-адреса http://localhost:8080/user/view/1 для первого пользователя и http://localhost:8080/user/view/2 для второго и т. д., но я не знаю, как использовать значение userId после загрузки этой страницы.

Как добиться этого с помощью PrettyFaces URLRewriteFilter? Как я могу загрузить данные, используя значение #{bean.userId} (1,2 и т. д.) из вспомогательного компонента после того, как PrettyFaces внедрил его при доступе к странице. Кто-нибудь может объяснить?

<url-mapping id="view">
<pattern value="/user/view/#{bean.userId}/" />
<view-id value="/userview.jsf" />
</url-mapping>

Я использую JSF2+Primefaces.3.0.M3+Prettyfaces-jsf2.3.3.2 с GAE.


person lofa in    schedule 31.01.2012    source источник


Ответы (2)


Вам нужно действие загрузки страницы, указанное элементом <action> в вашей конфигурации сопоставления URL. Во-первых, вам понадобится метод в вашем bean-компоненте, например:

@Named("bean")
@RequestScoped
public class LoginBean {

public String loadLoggedUser() {
    if ( userId != null ) {
        this.user = user.findById(userId);
        return null;
    }
    return "failure";
}
}

Во-вторых, вам нужно будет добавить <action> к вашему сопоставлению URL:

<url-mapping id="view">
     <pattern value="/user/view/#{bean.userId}/" />
     <view-id value="/userview.jsf" />
     <action>#{bean.loadLoggedUser}</action>
</url-mapping>

Здесь мы определили действие страницы, которое будет выполняться в bean-компоненте #{bean.loadLoggedUser}, когда запрашивается URL-адрес, соответствующий нашему шаблону. Например: /user/view/2.

person Kushan    schedule 31.01.2012

<url-mapping id="login">
        <pattern> /user/view/1 </pattern>
        <view-id> /legacy/user/login.jsp </view-id> <!-- Non JSF View Id -->
    </url-mapping>
    <url-mapping id="register">
        <pattern>/user/view/1 </pattern>
        <view-id>/faces/user/register.jsf</view-id> <!-- JSF View Id -->
    </url-mapping>
<url-mapping id="login1">
        <pattern> /user/view/2 </pattern>
        <view-id> /legacy/user/login2.jsp </view-id> <!-- Non JSF View Id -->
    </url-mapping>
    <url-mapping id="register2">
        <pattern>/user/view/2 </pattern>
        <view-id>/faces/user/register2.jsf</view-id> <!-- JSF View Id -->
    </url-mapping>

см. http://ocpsoft.com/prettyfaces/

person Hemant Metalia    schedule 31.01.2012
comment
Но у меня много пользователей. Поэтому мне нужно что-то вроде <pattern> /user/view/#{bean.userId} </pattern>. И я спрашивал, как я могу обработать этот #{bean.userId} в компоненте поддержки? - person lofa in; 31.01.2012
comment
Чтобы уточнить, я думаю, что вы имеете в виду, что я хочу загружать данные, используя значение #{bean.userId} при доступе к странице. - person Lincoln; 02.02.2012