- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 RichFaces 3.3.3 迁移到 4.0,并且遇到了一个无法解决的问题。
到目前为止,我已经使用 RichFaces 的@KeepAlive 注释来通过 beans 实现 View 范围,但新版本 4 到目前为止还没有这样的功能(据我所知)。所以我认为 @ViewScoped 注释将是自然(且快速)的替代品,但它不起作用。这是给我带来麻烦的相关代码。它呈现一个包含客户名称的表格作为链接,因此当单击名称时,它会弹出一个弹出窗口来编辑数据。它在 v3.3.3 中与 @KeepAlive 一起工作,但在 v4 与 @ViewScoped 中不起作用(弹出窗口不会被调用)。
页面:
<h:form prependId="false">
<rich:dataTable id="table" value="#{myBean.customers}" var="customer">
<!--...headers...-->
<h:column>
<a4j:commandLink action="#{myBean.selectCustomer}"
oncomplete="#{rich:component('popup_customer_editor')}.show();" render="form_customer_editor">
${customer.name}
<f:setPropertyActionListener value="#{customer}" target="#{myBean.selectedCustomer}"/>
</a4j:commandLink>
</h:column>
<h:column>${customer.address}</h:column>
</rich:dataTable>
</h:form>
<rich:popupPanel id="popup_customer_editor>
<h:form id="form_customer_editor">
<!--...form fields...-->
</h:form>
</rich:popupPanel>
bean :
@ManagedBean
@ViewScoped //It was @KeepAlive before
public class MyBean implements Serializable
{
private String name;
private String address;
private Customer selectedCustomer; //POJO class
//getters and setters
...
public String selectCustomer()
{
name = selectedCustomer.getName();
address = selectedCustomer.getAddress();
return null;
}
}
如有任何帮助,我们将不胜感激
最佳答案
您的操作可能不会被调用有两个原因:
您已提交一个字段,但验证/转换失败。如果您出现验证或转换错误,您的操作将不会被调用。你应该有一个<h:messages>
确保您看到它,并且由于它是 a4j:clickLink 将其放入 a4j:outputPanel
中像这样:<a4j:outputPanel ajaxRendered="true"><h:messages/></a4j:outputPanel>
.
您有<h:form>
在另一个里面<h:form>
,并且您正在尝试提交内部的。您可以使用 firebug 来跟踪它,非常非常简单。由于某种原因,JSF 决定不做任何事情。
看来您在这里做着一些奇怪的事情:
<h:form>
JSF2 中的 s(即它们停止工作),尤其是。使用 richfaces 模式面板,通过他们实现实际面板的方式实现,他们将内容从 <body>
中 DOM 中的任何位置移动。元素。因此我建议创建一个 <h:panelGrid>
在表单内,然后重新渲染该表单。 <f:setPropertyActionListener>
。真的吗?您还应该有 EL2,因此您可以更改此设置:
<a4j:commandLink action="#{myBean.selectCustomer}"
oncomplete="#{rich:component('popup_customer_editor')}.show();"
render="form_customer_editor">
${customer.name}
<f:setPropertyActionListener value="#{customer}"
target="#{myBean.selectedCustomer}"/>
</a4j:commandLink>
至
<a4j:commandLink action="#{myBean.selectCustomer(customer)}"
oncomplete="#{rich:component('popup_customer_editor')}.show();" render="form_customer_editor" value=#{customer.name}"/>
关于jsf - RichFaces 4 和 @ViewScoped,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547863/
我们正在将我们的项目迁移到针对 JBoss Wildfly 的 Java EE 7。 我们有几十个 @ManagedBean @javax.faces.bean.ViewScoped (旧的非 CDI
引自此 nice article , The new view scope should solve exactly those issues. A @ViewScoped bean will liv
我已经使用 JSF 很多年了,在下一个项目中,我们的目标是使 Web 层尽可能无状态。我正在探索的一种可能性是删除 @ViewScoped bean 类支持@RequestScoped (根据需要加上
这个问题在这里已经有了答案: JSF 2.1 ViewScopedBean @PreDestroy method is not called (2 个回答) 2年前关闭。 我有一个 @ViewScop
我有一个按钮,点击那个按钮我有客户端代码来设置 viewScope 值: var val = 'TEST_VALUE'; "#{javascript: viewScope.testVal =
我正在使用 JSF 构建一个单页应用程序,如下所示: 左侧的菜单是动态生成的,单击其中一个子菜单会创建一个选项卡,我在其中显示 中的内容。 . 菜单和选项卡代码:
在应用程序中,我需要知道 viewScope 变量是否已初始化。创建 viewScope 变量时,该值可能为 null。所以 viewScope.isEmpty("SomeName") 并没有告诉我它
我有一个按钮,点击那个按钮我有客户端代码来设置 viewScope 值: var val = 'TEST_VALUE'; "#{javascript: viewScope.testVal =
我正在使用带有多个和 fileUploadListener 方法的 primefaces fileUpload。每次上传的每个文件都会调用监听器,我想将每个文件存储在 arrayList 中,并在上传
如果我们没有相关页面所需的信息,我在从 View 作用域 bean 进行重定向时遇到问题。 @PostContruct 中的日志条目在与尝试呈现自身而不是遵循我的重定向的 View 相关的 NPE 之
此代码总是抛出 ViewExpiredException @ManagedBean(name = "test") @ViewScoped public class test implements Se
我要将一个参数从一个页面 (Facelet) 传递到范围为 View 范围的托管 Bean。 我试着这样做: import javax.faces.bean.ManagedBean; import j
我正在使用 JSF 2.0 和 Primefaces 3.4.2,我有一个使用延迟加载填充的数据表。 当我查看 managedbean 的范围时,数据表 selectedRow 给出空指针异常。如果我
使用下面的代码,我在 selectOneRadio 上使用监听器重定向到 url 中包含查询字符串的页面。 问题是,当我被重定向时,newsTitle 和 selectedNews 的值为空。为什么是
我已经看到有关调用 bean 构造函数和 ViewScope 的其他问题,但我仍然遇到困难。我看到的问题涉及我的应用程序中的两个特定页面。第一个是数据表(现在它填充了随机生成的数据,但最终会调用数据库
我想知道在两个 ViewScoped bean 之间传递数据(对象)的最佳实践是什么。 由于出色解释的问题,它们需要在 View 范围内here (简而言之:在这两个 View 中,我都在 h:dat
我的 h:commandButton "Login"有问题:当我使用 @ViewScoped 并按下此按钮时,会出现 ViewExpiredException,但是当我使用 @SessionScope
这个问题在这里已经有了答案: @ViewScoped calls @PostConstruct on every postback request (1 个回答) 5年前关闭。 我在 JSF 2.2.
在 Spring 3 和 JSF 2.0 中,当我们想要使用 JSF View 范围时,我们必须引入自定义 ViewScope 实现并指示 Spring 通过 CustomScopeConfigure
我在 jsf facelet 上有一个日历、编辑器、fileUpload 和一个 dataTable primefaces 控件。 代码如下, #{lbl.SSTitle}
我是一名优秀的程序员,十分优秀!