天道酬勤,学无止境

viewparams

f:viewParam with multiple values

I have a <f:viewParam> driven search screen. I am trying to implement it to take multiple values for a single <f:viewParam>. I believe the correct URL would look something like <url>?state=COMPLETE&state=PENDING The XHTML section is as follows: <f:metadata> <f:viewParam name="state" value="#{backingBean.state}" converter="#{stateNameConverter}" /> </f:metadata> I have tried the following 2 method signatures on backingBean: public void setState(State... state) Was hopeful that JSF implementation would build an array for the values and set on the backing bean. JSF implementation failed with

2021-11-25 00:10:07    分类:问答    jsf   viewparams

JSF bean:在设置 ViewParam 后调用 @PostConstruct 函数(JSF bean: call @PostConstruct function after ViewParam is set)

问题 我有一个 product.xhtml 和一个 ProductBean。 我使用 /product/{id} 来访问产品,所以我在 product.xhtml 中有一个 viewParam 值=ProductBean.id。 问题是在 bean 内部我使用了一个带有 PostConstruct 注释的 init 函数来填充产品的细节。 为此,我需要 id 来调用外部函数。 我猜虽然 init 在 vi​​ewParam 设置 bean 的 id 之前被调用,因此在 init 内部我不能调用外部函数,因为 id 尚未设置。 我做错了什么,我该如何解决? 更新 我发现出了什么问题。 我认为 viewParam 方法适用于 CDI bean,但 ManagedProperty 方法适用于 JSF beans.. 我现在还有一个问题。 我的 CDI bean 是 RequestScoped 并且当 product.xhtml 呈现时,bean 被创建,我猜后来被丢弃了。 有趣的是,我在那个 bean 中有一个函数,当我调用它时,我可以读取 id(我认为这是因为连接到视图参数),但不能读取任何其他属性。 任何想法如何解决这一问题? 回答1 你需要一个<f:event type="preRenderView">代替。 <f:metadata> <f:viewParam name="foo"

2021-11-24 13:49:32    分类:技术分享    jsf-2   managed-bean   postconstruct   viewparams

JSF bean: call @PostConstruct function after ViewParam is set

I have a product.xhtml and a ProductBean. I use /product/{id} to access the products so I have a viewParam in product.xhtml with value=ProductBean.id. The problem is that inside the bean I use an init function with a PostConstruct annotation in order to fill the details of the product. To do this I need the id to call an external function. I guess though that init is called before viewParam sets the id of the bean and therefore inside init I cannot call the external function because id is not set yet. What am I doing wrong and how do I fix this? UPDATE I found what was wrong. I think the

2021-11-19 11:47:24    分类:问答    jsf-2   managed-bean   postconstruct   viewparams

使用新的 xmlns.jcp.org 命名空间时 f:viewParam 不传递必需的参数(f:viewParam doesn't pass required parameter when new xmlns.jcp.org namespace is used)

问题 我正在尝试使用带有 Java EE 7 XML 命名空间的 Glassfish 4.0 来测试下面的示例。 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>Title</title> </h:head> <h:body> <h:form> <ul> <ui:repeat value="#{appLoad.movieList}" var="movie"> <li> <h:link value="#{movie.title}" outcome="movie" includeViewParams="true"> <f:param name="id" value="#{movie.id}"/> </h:link> </li> </ui:repeat> </ul> </h:form> </h:body> </html> 它链接到以下页面movie.xhtml : <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h=

2021-11-19 03:39:01    分类:技术分享    jsf-2   xml-namespaces   mojarra   jsf-2.2   viewparams

f:viewParam doesn't pass required parameter when new xmlns.jcp.org namespace is used

I am trying to use Glassfish 4.0 with Java EE 7 XML namespaces to test the sample below. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>Title</title> </h:head> <h:body> <h:form> <ul> <ui:repeat value="#{appLoad.movieList}" var="movie"> <li> <h:link value="#{movie.title}" outcome="movie" includeViewParams="true"> <f:param name="id" value="#{movie.id}"/> </h:link> </li> </ui:repeat> </ul> </h:form> </h:body> </html> It links to the following page movie.xhtml:

2021-11-14 23:00:20    分类:问答    jsf-2   xml-namespaces   mojarra   jsf-2.2   viewparams

使用 GET 提交 JSF 表单(Submit a JSF form using GET)

问题 如何将表单提交到同一页面并使用 GET 参数? JSF页面内容: <f:metadata> <f:viewParam name="item1" value="#{bean.item1}"/> <f:viewParam name="item2" value="#{bean.item2}"/> </f:metadata> ... <h:form> <h:inputText value="#{bean.item1}"/> <h:inputText value="#{bean.item2}"/> <h:button value="Submit" > <f:param name="item1" value="#{bean.item1}"/> <f:param name="item2" value="#{bean.item2}"/> </h:button> </h:form> 如果我请求页面:form.jsf?item1=foo&item2=bar,它将填充文本字段,但表单提交给自身似乎不起作用。 回答1 将<h:button>替换为 <h:commandButton value="Submit" action="form?faces-redirect=true&includeViewParams=true"/> 它有效地触发了一个 PRG (Post-Redirect-Get)

2021-10-21 03:29:29    分类:技术分享    forms   jsf   jsf-2   http-get   viewparams

f:viewParam 不起作用(f:viewParam is not working)

问题 我在 GlassFish 3.1.2.2 上使用 JSF 2.2.4。 我有这个支持 bean: import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import java.io.Serializable; @ManagedBean(name="testMB") @RequestScoped public class TestMB implements Serializable { public long id; public long getId() { return id; } public void setId(long id) { this.id = id; } } 这个视图test.xhtml : <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <f:metadata> <f:viewParam name="id" value="#{testMB.id}"/> </f:metadata> <h:body> <h:inputText value="#{testMB.id}" /

2021-10-09 10:31:46    分类:技术分享    jsf   jsf-2   viewparams

f:viewParam is not working

I am using JSF 2.2.4 on GlassFish 3.1.2.2. I have this backing bean: import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import java.io.Serializable; @ManagedBean(name="testMB") @RequestScoped public class TestMB implements Serializable { public long id; public long getId() { return id; } public void setId(long id) { this.id = id; } } And this view test.xhtml: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <f:metadata> <f:viewParam name="id" value="#{testMB.id}"/> </f:metadata> <h:body> <h

2021-10-09 09:34:52    分类:问答    jsf   jsf-2   viewparams

如果 af:viewParam 为空则重定向(Redirect if a f:viewParam is empty)

问题 如果f:viewParam为空,我是否执行重定向(或错误)? <f:metadata> <f:viewParam name="accountId" value="#{accountMB.id}"/> </f:metadata> 当我添加required="true" ,没有任何反应。 有什么选择? 回答1 当我添加required="true" ,没有任何反应 您需要<h:message(s)>来显示与给定(输入)组件关联的人脸消息。 您可能已经知道如何为<h:inputText>做到这一点。 您可以对<f:viewParam>执行完全相同的<f:viewParam> 。 <f:metadata> <f:viewParam id="foo" ... required="true" /> </f:metadata> ... <h:message for="foo" /> 如果f:viewParam为空,我是否执行重定向(或错误)? 不直接使用标准 JSF 验证工具。 您需要在<f:viewAction>手动完成这项工作(您需要确保上面没有任何验证器/转换器,否则不会由于验证/转换错误而被调用;您也可以使用<f:event type="preRenderView"> )。 <f:metadata> <f:viewParam value="#{bean.foo}" /> <f

2021-09-20 09:20:26    分类:技术分享    jsf   redirect   error-handling   jsf-2.2   viewparams

@NotNull Bean 验证忽略了 viewParam(@NotNull Bean Validation ignored for viewParam)

问题 问题 我正在尝试验证一个强制性的 GET 请求参数。 在视图中,我添加了相应的 viewParam 标记。 <f:metadata> <f:viewParam name="customerId" value="#{customerDetailBean.customerId}"/> </f:metadata> 我的 CDI bean 看起来像这样 @Model public class CustomerDetailBean { @NotNull private Integer customerId; public Integer getCustomerId() { return customerId; } public void setCustomerId(Integer customerId) { this.customerId = customerId; } } 当我使用以下请求时,验证工作正常并显示预期的验证消息。 http://localhost:8080/getsupport/customerdetail.jsf?customerId= 但是,当我通过删除参数 customerId 更改请求时,将跳过验证并且不显示任何消息。 http://localhost:8080/getsupport/customerdetail.jsf 有没有办法让它按预期工作? 解决方法

2021-09-01 01:54:14    分类:技术分享    jsf   bean-validation   jsf-2.2   viewparams