相关疑难解决方法(0)

如何在JSF中获取和设置会话范围内的对象?

我需要在我的JSF应用程序的会话范围中只保留一个对象.我在哪里定义会话变量,如何从视图文件或辅助bean中获取和设置它?

session jsf

19
推荐指数
1
解决办法
5万
查看次数

JSF 2.0.无法在preRenderView事件处理程序中获取POST参数和cookie

我正在努力开发一项服务.

关键是我的index.xhtml应该从HTTP Request获取参数(POST和GET)和cookie.

我尝试过组合<f:metadata><f:event type="preRenderView">像这样:

<f:metadata>  
    <f:event type="preRenderView" listener="#{deConversation.start}"/>  
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

deConversation.start的代码:

public void start(ComponentSystemEvent event) {
    System.out.println("checkLogin");
    HttpServletRequest request = SsoHelper.getRequest();
    String requestSessId = SsoHelper.getRequestSessionId(request);
    String requestRedirect = SsoHelper.getRequestRedirect(request);

    System.out.println("sessId " + requestSessId);

    if (requestRedirect == null || requestRedirect.isEmpty()) {
        requestRedirect = "self";
    }

    if (requestSessId != null) {
        trySessId(requestSessId, requestRedirect);
    }

    externalResourcesHandler.setExternalRedirect(requestRedirect);
    tryToBeginConversation();

    if (!isAuthorized()) {
        SsoHelper.performNavigation("auth");
    }
}
Run Code Online (Sandbox Code Playgroud)

SsoHelper只提供这样的api:

public static String getRequestSessionId(HttpServletRequest request) {
    Map<String, Object> cookieMap = FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap();
    String requestDeSessionId = null; …
Run Code Online (Sandbox Code Playgroud)

java jsf prerender jsf-2

7
推荐指数
1
解决办法
1573
查看次数

@ManagedProperty,请求参数未在@Named bean中设置

我有一个CDI托管bean,我想将请求参数设置为托管属性:

import javax.inject.Named;
import javax.enterprise.context.RequestScoped;

@Named
@RequestScoped
public class ActivationBean implements Serializable {

    @ManagedProperty(value="#{param.key}")
    private String key;

    @ManagedProperty(value="#{param.id}")
    private Long id;

    // Getters+setters
Run Code Online (Sandbox Code Playgroud)

domain/activate.jsf?key=98664defdb2a4f46a527043c451c3fcd&id=5但是,URL是永远不会设置和保留的属性null.

这是怎么造成的,我该如何解决?

我知道我可以从ExternalContext下面手动抓取它们:

Long id = Long.parseLong(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"), 10);
String key = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("key");
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿使用注射剂.

jsf cdi managed-bean http-request-parameters managed-property

6
推荐指数
1
解决办法
2574
查看次数