有人可以解释什么是无范围和目的吗?
假设我有一个豆子
request scope as r1
session scope as s1
application scope a1
Run Code Online (Sandbox Code Playgroud)
并且说我没有将范围bean n1注入到上述每个范围中,然后我发现当实例化其父bean [r1/s1/a1]时,n1将被实例化为每个父bean.
a1中的无范围bean在a1中始终可用,因为a1是appl范围.s1中的无范围bean仅在s1未被销毁之后才可用,并且当再次创建s1时,n1将被实例化并且可用于它.
这是对的吗?
和使用它的目的是什么?只是为了避免创造这样的豆我们自己?
非常感谢
我有一个关于servlet重定向到同一初始页面的问题.以下是场景:假设用户想要购买物品,那么他填写金额并提交.表单将提交给servlet,并根据数据库中的可用数量检查可用数量.因此,如果订购的商品数量超过可用数量,则servlet会重定向到同一页面,但会显示"商品不可用"等消息.所以我的问题是如何实现这个案例.如何使用错误消息重定向到同一初始页面.我不想在这里使用ajax.
以下是我如何将其视为:1.)如果生成错误,我应该设置上下文属性,然后在重定向后再次在初始页面中检查它并显示已设置的消息.
这类活动的最佳做法是什么?
我正在使用JavaServer Faces开发Web应用程序.
我已经找到了很多关于如何使用JavaServer Faces的示例和教程,但它们都没有实际解释Bean的用途.我最初的想法是,豆类代表形式.在表单中输入数据并单击提交按钮,关联的Bean将填充数据并调用方法.
但是,到目前为止,我只看到每页有一个Bean的示例,因此Bean也可以表示页面,因此包含多个表单.
我也对Bean的范围感到困惑.如果Bean表示表单或页面,则在请求结束后它将变为无效.如果你让bean活在会话范围内,那么Bean会发生什么?您是否仍然可以以某种方式从中获取数据,或者一旦您返回它就会为您填写相关表格?
总结一下 - 什么是Managed Bean以及如何正确使用它?
是否可以在同一页面上的回发中保持请求范围的bean活动?
一般的问题是,当bean在请求结束时被删除并在每个表单提交时重新创建,例如动态操作后面的布尔值disabled,readonly并rendered重置为默认值并导致表单不再像预期的那样工作.
如果有表单,并且有文本框和按钮,那么在提交表单后如何删除文本框的内容?
<h:inputText id="name" value="#{bean.name}" />
<h:commandButton id="submit" value="Add Name" action="#{bean.submit}" />
Run Code Online (Sandbox Code Playgroud)
在文本框中输入值并提交后,该值仍显示在文本框中.我需要在提交后清除文本框的内容.我怎样才能做到这一点?
默认情况下,JSF似乎非常"有状态".我需要允许人们使用我们的应用程序,多个选项卡在应用程序的不同部分执行许多操作.
如果没有大量的重新设计,我似乎无法找到合适的指令来实现这一目标.
我们目前没有使用ICEfaces,但我刚在ICEfaces文档中找到了这个:
6.5.7.ICEfaces Portlet和并发DOM视图
ICEfaces提供了一个名为Concurrent DOM Views的功能,它控制ICEfaces框架是否支持来自同一浏览器的单个应用程序的多个视图.在portlet容器中运行时,ICEfaces需要将单个门户网站页面上的单独portlet视为不同的视图,因此几乎总是需要(因此最安全)将此参数设置为true.
例6.19.在WEB-INF/web.xml配置文件中启用ICEfaces并发DOM视图功能,以便将同一门户网站页面上的单独portlet视为不同视图
com.icesoft.faces.concurrentDOMViews是的
所以,我想知道这个神话般的声音功能是否可能适用于我现有的h:表格或者它是否只适用于ICEface组件?
任何人都可以提供任何好的建议,让JSF应用程序在多个选项卡中工作?
使用单例类和应用程序范围的托管bean来保存应用程序数据有区别吗?
我需要查找某些JNDI资源,例如远程bean接口,因此我自己写了一个单例来缓存我的引用,只允许单引用.(服务定位)
我在两个不同的浏览器中打开了我的网站,而且这个单例只被初始化了一次.所以我假设它的应用范围?
应用程序范围托管bean的任何其他好处,然后能够访问其在jsf中的属性?
您认为将所有广泛使用的实用程序方法放在应用程序范围的bean中是一个好主意吗?
在当前执行的应用程序我的工作,所有的实用方法(用绳子,饼干操纵,检查URL,检查当前的页面,用户等)都放在一个大的请求范围豆,他们是从引用每个xhtml页面.
如果将实用程序方法放在应用程序作用域中的方法是一个好的或坏的选择,我找不到有关stackoverflow的任何信息.
为什么我遇到这个想法是需要在范围更广的bean中重用那些方法,然后再使用请求范围的bean(如视图或会话范围的bean).如果我错了,请纠正我但是你应该总是注入相同或更宽的范围bean,即你不应该在视图范围内注入请求范围的bean.
我想使用的实用方法,从应用范围的bean应该是有益的(不会有任何新对象的创建,一个对象将被创建并在所有应用重复使用),但我仍然想确认或如果有人告诉我这是一种错误的方法,为什么是错的.
我在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) 我有一个报告生成页面,其中我有几个过滤器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 ×9
java ×3
managed-bean ×3
scope ×3
jsf-2 ×2
architecture ×1
clear ×1
forms ×1
icefaces ×1
jsf-2.2 ×1
jsp ×1
primefaces ×1
redirect ×1
servlets ×1
singleton ×1