JSF2.0,commandButton如何知道发送此消息的bean
我从JSF2开始,来自SpringMVC,所以我有一些疑问,我无法在核心JavaServerFacesV3上找到答案 像这个 标签JSF2.0,commandButton如何知道发送此消息的bean,jsf,jsf-2,Jsf,Jsf 2,我从JSF2开始,来自SpringMVC,所以我有一些疑问,我无法在核心JavaServerFacesV3上找到答案 像这个 标签h:commandButton如何知道我在谈论哪个bean?每个JSF页面只能有一个Bean,是吗?我只给它一个msg.next,它是来自i18n文件的文本。(quizbean是我的bean) #{msgs.heading} #{msgs.guessNext} #{quizBean.current.sequence} #{msgs.answer} bea
h:commandButton
如何知道我在谈论哪个bean?每个JSF页面只能有一个Bean,是吗?我只给它一个msg.next,它是来自i18n文件的文本。(quizbean是我的bean)
#{msgs.heading}
#{msgs.guessNext}
#{quizBean.current.sequence}
#{msgs.answer}
bean必须由JSF管理,然后它将知道您在谈论哪个bean e、 g 或者在JSF配置文件(
faces config.xml
)中提到它,如下所示-
基茨比
com.pkg.QuizBean
一场
//早期版本的JSF在注释不起作用时需要这样做
//但是如果您使用的是JSF2.0,那么使用注释会更好
在一个视图(页面)中可以使用多个bean bean必须由JSF管理,然后它将知道您在谈论哪个bean e、 g 或者在JSF配置文件(
faces config.xml
)中提到它,如下所示-
基茨比
com.pkg.QuizBean
一场
//早期版本的JSF在注释不起作用时需要这样做
//但是如果您使用的是JSF2.0,那么使用注释会更好
在一个视图(页面)中可以使用多个bean 如果这是一个来自
核心Java Server Faces
的示例,那么请仔细阅读,它解释了一切
msgs
据我所知,是指在faces config.xml中声明的消息包
至于您的问题,commandButton如何知道调用哪个bean。在您的示例中,类名QuizBean很可能对应于同名的bean。这对于JSF2.0来说已经足够了。但是,您可以通过两种方法更改该名称:
1) 如果您使用JSF托管bean,您应该这样做:
@ManagedBean(name="quiz")
@ViewScoped
public class QuizBean { }
2) 如果您使用CDI-bean,您将执行以下操作:
@Named("quiz")
@RequestScoped
public class QuizBean {}
记住CDIBeans范围注释来自包javax.enterprise.context。JSF作用域在javax.faces.bean包中不要混合它们强>
更新:
有关您的问题的更多详细信息,请参阅本书第35页,如果您不理解某些内容,请不要急于提问。如果这是来自
Core Java Server Faces
的示例,请仔细阅读,它解释了一切
msgs
据我所知,是指在faces config.xml中声明的消息包
至于您的问题,commandButton如何知道调用哪个bean。在您的示例中,类名QuizBean很可能对应于同名的bean。这对于JSF2.0来说已经足够了。但是,您可以通过两种方法更改该名称:
1) 如果您使用JSF托管bean,您应该这样做:
@ManagedBean(name="quiz")
@ViewScoped
public class QuizBean { }
2) 如果您使用CDI-bean,您将执行以下操作:
@Named("quiz")
@RequestScoped
public class QuizBean {}
记住CDIBeans范围注释来自包javax.enterprise.context。JSF作用域在javax.faces.bean包中不要混合它们强>
更新:
有关您的问题的更多详细信息,请参阅本书第35页,如果您不理解某些内容,请不要急于提问。命令按钮不需要知道这一点。它只生成一个HTML
元素。这被嵌入到HTML
中,其中一个操作URL指向与页面相同的URL。另外还有
。多亏了这个字段,JSF才确切地知道您提交给哪个视图。此视图保存有关所有输入的信息。此视图知道有一个
。视图知道生成的HTML
元素的字段名称。JSF将使用此名称通过request.getParameter()
获取提交的请求参数值,然后使用此值更新quizBean
当前实例的answer
属性
右键单击浏览器中的页面并选择View Source以查看JSF生成的HTML输出。在applyrequestvaluespase#execute()
和HtmlBasicRenderer#decode()
方法上放置一个断点(假设您使用的是Mojara而不是MyFaces)来跟踪视图中每个UIComponent
提交值的收集 命令按钮不需要知道这一点。它只生成一个HTML
元素。这被嵌入到HTML
中,其中一个操作URL指向与页面相同的URL。另外还有
。多亏了这个字段,JSF才确切地知道您提交给哪个视图。此视图保存有关所有输入的信息。此视图知道有一个
。视图知道生成的HTML
元素的字段名称。JSF将使用此名称通过request.getParameter()
获取提交的请求参数值,然后使用此值更新quizBean
当前实例的answer
属性
右键单击浏览器中的页面并选择View Source以查看JSF生成的HTML输出。在applyrequestvaluespase#execute()
和HtmlBasicRenderer#decode()
方法上放置一个断点(假设您使用的是Mojara而不是MyFaces)来跟踪视图中每个UIComponent
提交值的收集 因此,如果我在同一个页面中有两个bean,它将同时更新这两个bean
@ManagedBean(name="quiz")
@ViewScoped
public class QuizBean { }
@Named("quiz")
@RequestScoped
public class QuizBean {}