希望有人可以帮我解决一个轻微的障碍,在a4j链接/按钮执行了它的操作后,我反对重新渲染RichFaces组件.我的问题的简化版本如下:
我有2个输出组件显示文本值,这些组件基于我的manager类中的某个值进行渲染:
<h:outputText id="on" value="ON" rendered="#{manager.isOn}" />
<h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" />
Run Code Online (Sandbox Code Playgroud)
我还有2个a4j链接调用一些动作,然后重新渲染上面的outputText组件:
<a4j:commandLink ajaxSingle="true" value="Set On" action="#{manager.setOn(true)}" reRender="on,off" />
<a4j:commandLink ajaxSingle="true" value="Set Off" action="#{manager.setOn(false)}" reRender="on,off" />
Run Code Online (Sandbox Code Playgroud)
我期望发生的是,当我点击'Set On'按钮时,'ON'outputText组件将取消隐藏,并且'OFF outputText组件将显示.但是,这不会发生.
有没有人知道为什么会这样,以及我如何在a4j组件操作完成后重新渲染这些组件?
我们正在开发一个Java Web应用程序,它的UI使用JSF(Richfaces通过Seam).我读过几篇文章,指出在UI组件上使用"rendered ="属性会导致相当大的性能损失.我们有几个组件,我们想根据它们的值是否设置来启用或禁用.例如,如果我们要显示待售商品,我们就不会为未设置的属性设置一堆空白字段.
然而,鉴于这种性能影响,我们担心使用多个"渲染"字段.有更好的替代品吗?我们可以做些什么来改善使用这个领域的表现吗?
我们有一个基于swing的前端用于企业应用程序,现在正在为它实现一个(现在更简单)JSF/Seam/Richfaces前端.
某些页面包含的字段在编辑时应导致其他字段因此而更改.我们需要立即向用户显示此更改(即他们不必按下按钮或任何其他内容).
我已成功使用h:commandButton并通过添加onchange="submit()"导致其他字段更改的字段来实现此功能.这样,表单提交在他们编辑字段时发生,其他字段作为结果更新.
这在功能上运行良好,但特别是当服务器处于显着负载(经常发生)时,表单提交可能需要很长时间,并且我们的用户在此期间继续编辑字段,然后在对onchange="submit()"请求的响应时恢复渲染.
为了解决这个问题,我希望能够实现以下目标:
好吧,我认为首先展示一下我的页面可能是最容易的.请注意,这只是一个摘录,有些页面会有很多字段和许多按钮.
<a4j:form id="mainForm">
...
<a4j:commandButton id="calculateButton" value="Calculate" action="#{illustrationManager.calculatePremium()}" reRender="mainForm" />
...
<h:outputLabel for="firstName" value=" First Name" />
<h:inputText id="firstName" value="#{life.firstName}" />
...
<h:outputLabel for="age" value=" Age" />
<h:inputText id="age" value="#{life.age}">
<f:convertNumber type="number" integerOnly="true" />
<a4j:support event="onchange" ajaxSingle="true" reRender="dob" />
</h:inputText>
<h:outputLabel for="dob" value=" DOB" />
<h:inputText id="dob" value="#{life.dateOfBirth}" styleClass="date">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="#{userPreference.timeZone}" />
<a4j:support event="onchange" …Run Code Online (Sandbox Code Playgroud) 在我的页面上,我有一个按钮,用于打开弹出窗口中的项目列表.当我在列表中选择1项时,我想将项目的ID传递给我的第一页的后台.可能吗?它试图用它做a4j:jsFunction,a4j:param但它不起作用.
这是我的代码:
第1页:
<a4j:jsFunction name="renderGuarantor" render="guarantor" actionListener="#{prospectDetail.setNewGuarantor}">
<a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}" />
</a4j:jsFunction>
Run Code Online (Sandbox Code Playgroud)
popuppage:
<h:outputLink value="" onclick="window.opener.renderGuarantor(#{applicant.deposit_id});window.close();">
<h:graphicImage style="padding:0 1px; border:0" value="${path.staticRootUrl}images/confirm.gif" alt="${msg.applicantslist_select}" title="${msg.applicantslist_select}"/>
</h:outputLink>
Run Code Online (Sandbox Code Playgroud)
这是第一页的支持bean代码
private Integer newGuarantorId;
public void setNewGuarantor() {
guarantor = newGuarantorId;
}
public Integer getNewGuarantorId() {
return newGuarantorId;
}
public void setNewGuarantorId(Integer newGuarantorId) {
this.newGuarantorId = newGuarantorId;
}
Run Code Online (Sandbox Code Playgroud)
在弹出窗口中选择时,我的backingbean中的方法被调用,但是newGuarantorId为null并且setNewGuarantorId从不被调用.
我的问题有解决方案吗?
我正在尝试使用rich:editor in rich:popupPanel来更新数据表中的博客文章.我正在使用RichFaces 4.2.0.如果我在popupPanel外部使用该编辑器标签,它只能在内部时工作正常.有人有这个问题吗?
我的代码是这样的:
<h:form id="form">
<rich:dataTable value="#{managePosts.allBlogPosts}" var="post" id="manage_posts_data_table"
styleClass="manage_posts_table" rows="15">
<f:facet name="noData">
Nothing found
</f:facet>
...
<rich:column width="70px">
<h:link outcome="userViewPost.jsf">
<f:param name="post_id" value="#{post.id}" />
<h:graphicImage library="images" name="posts/manage/view.png" />
</h:link>
<a4j:commandLink render="editGrid" execute="@this"
oncomplete="#{rich:component('editPane')}.show()">
<h:graphicImage library="images" name="posts/manage/update.png" />
<f:setPropertyActionListener target="#{managePosts.editedPost}" value="#{post}" />
</a4j:commandLink>
</rich:column>
</rich:dataTable>
<rich:popupPanel header="#{msg.edit_selected_post}" id="editPane" width="685" height="600" modal="true">
<h:outputLabel value="#{msg.title}: " styleClass="form_labels" />
<h:inputText id="update_post_title" value="#{managePosts.editedPost.title}" required="true"
requiredMessage="#{msg.empty_field_err}" size="103">
<f:validateLength minimum="6" maximum="128"/>
</h:inputText>
<h:outputLabel value="" />
<rich:message for="update_post_title" />
<h:outputLabel value="" />
<h:outputLabel value="#{msg.content}: " …Run Code Online (Sandbox Code Playgroud) 我想导出a <rich:dataTable>或<rich:extendedDataTable>excel 的内容.
我看到PrimeFaces有"出口商特色" http://www.primefaces.org/showcase/ui/exporter.jsf
我希望只能使用PrimeFaces做类似的事情,但是使用richFaces(版本3.3.3)......(我想在未来的某个时候迁移到RichFaces 4但是我坚持使用3.3 .3现在)
我已经读过可以使用http://poi.apache.org/构建自己的, 但我不知道从哪里开始实现这样的东西......
任何关于如何最好地预先形成所需出口和示例的想法将不胜感激!
我有h:inputTextarea一些人a4j:support按需更新模型
<h:inputTextarea rows="15" id="taFreetext" value="#{customInput.value}"
required="true"
onkeyup="textAndLinesCount(#{rich:element('taFreetext')},document.getElementById('msgCounterLines'),20, 64);">
<a4j:support ajaxSingle="true" event="onchange" />
</h:inputTextarea>
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我按下一个键时,不仅我的上下文中的模型被更新,而且实体也会自动刷新!
在page.xml该文件中有冲洗模式到手动
<begin-conversation join="true" flush-mode="manual"/>
Run Code Online (Sandbox Code Playgroud)
我在Seam框架论坛中阅读了这篇文章:AJAX和更新模型的问题,但这并没有真正帮助.我也有一些action在我a4j:support,使一个entityManager.refresh()写在后,但随后的模型和实体仍然在旧的国家...
期待一些好的提示,谢谢!
(我使用JSF 1.2,RichFaces 3.3.3)
我们正在将JSF 1.1(MyFaces)项目迁移到JSF 2.我们的想法是通过将JSP和XHTML保持在一起一段时间来定期迁移.我们在JSP页面中使用了许多ajax4jsf-1.1.1标记.我们不使用RichFaces.将系统配置为JSF 2(Balusc教程中提到的所有配置更改)当尝试在类路径中使用ajax4jsf.jar访问JSP页面时,我们得到一个异常:
Caused by: java.lang.IllegalStateException: setViewHandler may not be executed after a lifecycle request has been completed
at org.apache.myfaces.application.ApplicationImpl.setViewHandler(ApplicationImpl.java:853)
at org.ajax4jsf.framework.ajax.InitPhaseListener.beforePhase(InitPhaseListener.java:92)
at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:76)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:131)
Run Code Online (Sandbox Code Playgroud)
它看起来ajax4jsf.jar与JSF 2不兼容.看起来LifeCycle配置存在一些问题.
有没有什么办法可以让a4j与JSF 2 JSP一起工作?我知道当我们使用XHTML时,我们不需要这一切.
我在Richfaces 4.x中发现了一个错误.我需要更改Richfaces 4的Autocomplete.js.
我搜索了它,但我找不到令人满意的解决方案.
任何人都可以向我解释如何应用补丁Richafaces 4.x?
先感谢您
我目前正在尝试将项目从RichFaces 3.0迁移到PrimeFaces 6.0,但我没有在PrimeFaces中找到这样的组件.
richfaces ×10
jsf ×6
ajax4jsf ×5
jsf-2 ×3
seam ×3
java ×2
ajax ×1
apache-poi ×1
excel ×1
jboss ×1
jsf-1.2 ×1
myfaces ×1
patch ×1
performance ×1
primefaces ×1