相关疑难解决方法(0)

@SessionScoped bean会丢失范围并一直重新创建,字段变为null

我在JSF 2.0项目中使用SessionScoped bean时遇到了一个非常奇怪的问题.使用Netbeans 6.9.1,Glassfish 3服务器和PrimeFaces 3作为JSF组件库.

这是一些代码:

package com.hia.jsf;

import com.hia.netlabel.jpa.Genre;
import com.hia.netlabel.jpa.Label;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;

@ManagedBean
@SessionScoped
public class LabelDetailJSF implements Serializable{

@ManagedProperty("#{genreLabelListJSF}")
private GenreLabelListJSF genreLabelListJSF;
private List<Genre> DetailLabelGenreList;
private Label DetailLabel;
/** Creates a new instance of LabelDetailJSF */
public LabelDetailJSF() {
}
@PostConstruct
public void init(){
           System.out.print("Running init LabelDetailJSF");
           if(genreLabelListJSF.getSelectedLabel()!=null)
           {
                System.out.print("genreLabelListJSF was not null");
                this.DetailLabelGenreList=genreLabelListJSF.getSelectedLabel().getGenreList();
                this.DetailLabel= (genreLabelListJSF.getSelectedLabel());
           }
           if(this.DetailLabelGenreList==null){
               System.out.println("Bloody thing became null");

           }
}






/**
 * …
Run Code Online (Sandbox Code Playgroud)

jsf postconstruct primefaces

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

在另一个托管bean中访问JSF托管bean的值

我有一个报告生成页面,其中我有几个过滤器countryId,Date以及一些其他参数供用户选择.现在基于所选参数,有一个数据库调用,它使用这些参数来获取结果列表.

现在托管bean包含所有这些搜索参数和结果列表.让我们将此bean命名为 Bean1

public class Bean1 implements Constants{
    private List<SelectItem> countryList;
    private List<String> choosenCountryList;
    private List<String> choosenProgramList;
    private String invoiceDatePriorTo= CalendarUtilities.getTodaysDate() ;
    private List<CustomResults> searchResultList
}
Run Code Online (Sandbox Code Playgroud)

我们还有一个托管bean Bean2,它包含一个属性Bean1

public class Bean2 implements Constants {
    private Bean1 bean1;

    public getSearchResults(){
        //Code for fetching the search list for bean 1
        this.setsearchResultList() //=fetched list from DB;
    }

    public modifySearchResults(){}
}
Run Code Online (Sandbox Code Playgroud)

现在当我们从JSF页面触发一个动作时,我们调用该getSearchResults()方法并将其设置为searchResultList在屏幕上显示.这样我们就可以在屏幕上显示搜索列表

现在我们得到的列表会在屏幕上进行用户修改.现在我们再次调用modifySearchResults来编辑列表时,我们无法检索bean2中的列表,因为托管bean在请求范围内.

谁能告诉我如何继续解决这个问题?

jsf jsf-2

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

在JSF中的托管组件之间传递数据

实际上是否可以在JSF中的托管组件之间传递任何数据?如果是的话,如何实现这一目标?

有人可以提供任何样品吗?

java jsf

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

CDI缺少@ViewScoped和@FlashScoped

为什么Java EE 6 CDI缺少@ViewScoped和@FlashScoped注释?(特别是前者让我感到奇怪,因为CDI源于Seam世界,它已经知道了非常相似的ScopeType.PAGE ...)

使用CDI时建议的解决方法是什么?使用Seam 3?

谢谢

java seam cdi java-ee-6

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

确切地说,当@Inject注释在Servlet中启动SessionScoped bean的注入时?

我需要在Servlet中修改用户会话对象(SessionScoped bean-CDI),所以我必须以某种方式获取该bean.我用以下方式注射:

@Inject
private UserSession user;
Run Code Online (Sandbox Code Playgroud)

UserSession是SessionScoped CDI bean.用户方法是从doPost或doGet servlet方法调用的.这很完美; 每次@Inject注释都会注入相应的UserSession bean,但我不明白这种行为是如何实现的.

我假设用@Inject注释的bean只注入一次(当创建对象 - 本例中的Servlet实例时),但这显然是错误的假设.

那么,这些bean什么时候注入到servlet中?按要求?当有多个UserSession对象时,这种方法如何避免冲突(一个servlet实例 - 处理它的多个线程)?

servlets cdi jsf-2

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

将JSF inputText与支持bean的字段链接而不显示其值

我有这样的支持bean:

@ManagedBean
@SessionScoped
public class TestBean {

    private String testString;

    public String getTestString() {
        return testString;
    }

    public void setTestString(String testString) {
        this.testString = testString;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的xhtml页面也非常简单:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"    
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      >

    <h:head></h:head>

    <h:body>

        <h:form>
            <h:inputText value="#{testBean.testString}"/>
            <h:commandButton action="#{testController.testAction}"/>
        </h:form>

    </h:body>

 </html>
Run Code Online (Sandbox Code Playgroud)

我想要的一切 - 渲染我的h:inputText元素没有价值(空).
我是JSF的新手,所以,你能帮助我吗?
最诚挚的问候!

UPD!
它是简化的代码,我testString在其他地方使用并且testString有价值,我想隐藏它!我想保持这个价值.

java jsf-2

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

在primefaces数据表过滤器中设置默认值

我正在使用primefaces v3.5.在数据表中我在一列上使用过滤器.如何在加载页面时为过滤器设置默认值.

jsf primefaces jsf-2

6
推荐指数
3
解决办法
2万
查看次数

在JSF中创建多个依赖/级联selectOneMenu下拉列表

我正在尝试制作4个相关菜单.

当用户从第一个菜单中选择项目时,第二个菜单将显示相关数据,当用户从第二个菜单中选择项目时,第三个菜单将显示相关数据,依此类推.

用户将仅在第一个菜单上看到项目,而其他项目将为空白.如果他在第一个菜单上选择一个项目,则第二个菜单将显示数据,但第三个和第四个将保持空白,依此类推.用户最终必须从所有4个菜单中选择条目.

<h:selectOneMenu id="first" value="#{nodes.selectState"}>
    <f:selectItems value="#{nodes.stateList}"/>
    <f:ajax render="second">
</h:selectOneMenu>
<h:selectOneMenu id="second" value="#{nodes.selectCity"}>
    <f:selectItems value="#{nodes.cityList}"/>
    <f:ajax render="third">
</h:selectOneMenu>
<h:selectOneMenu id="third" value="#{nodes.selectRegion"}>
    <f:selectItems value="#{nodes.regionList}"/>
    <f:ajax render="fourth">
</h:selectOneMenu>
<h:selectOneMenu id="fourth" value="#{nodes.selectStation"}>
    <f:selectItems value="#{nodes.stationList}"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

节点Java类

private String selectState; //+setters, getters
private String selectCity; //+setters, getters
private String selectRegion; //+setters, getters
private String selectStation; //+setters, getters
private List<SelectItem> stateList; //+setters, getters
private List<SelectItem> cityList; //+setters, getters
private List<SelectItem> regionList; //+setters, getters
private List<SelectItem> stationList; //+setters, getters

public getStateList(){
    stateList= new ArrayList<SelectItem>();
    stateList.add(new …
Run Code Online (Sandbox Code Playgroud)

jsf hierarchy cascading selectonemenu ajax-update

6
推荐指数
2
解决办法
6441
查看次数

JSF中的范围2

我有一个CRUD应用程序..在数据的提取位置,显示n编辑n存储回db.页面之间还有顺序访问,第二页上需要输入第一页上输入的信息,依此类推.什么是最好的范围和原因?

何时使用哪个范围?每个范围的生命周期是什么.

另外,我找不到任何关于范围的好教程.如果您知道相同的情况,请指导.

谢谢,Shikha

jsf-2

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

jsf中的SelectBooleanCheckbox

嗨,我是JSF的新手,有这样的问题.在我的页面上,我有新闻列表,每个新闻都有复选框(我们可以选中此复选框,然后删除已检查的新闻).这很好用.但是在删除之后我返回到我的页面然后按F5然后我的应用程序认为检查了删除后的复选框并将其删除.例如我有这个: 在此输入图像描述

按删除按钮,并具有: 在此输入图像描述 按f5,我看到了这个: 在此输入图像描述

所以我的删除方法如下所示:

Map<Integer, Boolean> allCheckboxes = newsForm.getCheckboxes();
Set<Integer> checkboxes = newsForm.getCheckboxes().keySet();
Set<Integer> checkedCheckboxes = new HashSet<>();
for(Integer id : checkboxes){
    boolean value = allCheckboxes.get(id);
    if(value){
        checkedCheckboxes.add(id);
    }
}
if (checkedCheckboxes.size() != 0) {
    newsDao.deleteNewsById(checkedCheckboxes.toArray());
} else {
    Integer[] delete = { newsForm.getNews().getId() };
    newsDao.deleteNewsById(delete);
}
newsForm.setNewsList(newsDao.getNewsList());
return list() + REDIERCT;
Run Code Online (Sandbox Code Playgroud)

在我的页面我使用selectBooleanCheckbox:

<h:selectBooleanCheckbox id="checkbox" 
                            value="#{newsForm.checkboxes[news.id]}" />
Run Code Online (Sandbox Code Playgroud)

所以我不明白为什么当我按f5时我的Map<Integer, Boolean> allCheckboxes一些元素值为true.每次删除后我都会重新创建Map<Integer, Boolean> allCheckboxes

更新 news.xhtml

<h:form id="main-form" onsubmit="return getSelectedCheckBoxes()">
                <h:commandLink styleClass="news-link" action="#{controller.list}"
                    value="#{messages['body.news']}" />
                &gt;&gt;
                <h:outputText value="#{messages['body.news.titles.list']}" /> …
Run Code Online (Sandbox Code Playgroud)

java jsf

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