我们在其中一个项目中使用Richfaces.
我需要动态地将元素集中在某些用户操作上.这里的问题是我只有id(我给元素的JSF特定id.)
例如:因为h:inputText我用它
<h:inputText id="userNameInputBox" value="<<some binding>>/>
Run Code Online (Sandbox Code Playgroud)
此输入框以单独的形式嵌入.当我在表单中包含输入框时,输入框的ID将是:formName:userNameInputBox (<<formName>>:<<elementId>>)
我将在多个JSP中重用输入框.这意味着,我不知道我将在其中包含输入框的父表单.
现在,我需要聚焦()输入框.目前我无法做到这一点,因为我没有实际生成的id(<<formname>>:<<elementId>>)但我只有我给出的JSF特定ID.
如何使元素聚焦起作用?
使用JSF/Seam/RichFaces堆栈,有没有办法标记注释(在XHTML页面上),以便它们不会包含在HTML输出中?即,像JSP一样<%-- comments --%>,而不是正常的<!-- comments -->.
我听说facelets.SKIP_COMMENTScontext-param migth对普通HTML注释执行此操作,但还有其他选项吗?(毕竟,可能有一些注释要包含在页面输出中,有些则不包括在内.)
我的JSF/RichFaces/Facelets ajax请求存在性能问题,而且我可以告诉它,因为整个组件树正在每个ajax请求上重建.即使我使用ajaxSingle = true,在a4j:区域中包装部分,声明单个部分进行重新渲染或根本不进行渲染,也会发生这种情况.我们的页面是一个包含许多嵌套级别的动态页面.该页面可能包含大约800-900个字段(inputText,富日历,selectOneMenus等).初始加载时间是一个问题,但我理解这个问题,它有很多领域.一旦我们有了初始构建/渲染时间,虽然我们已经将所有其他操作设计为ajax并且只需要reRender.从facelets调试日志我在任何ajax调用上看到这样的消息:
2011-08-24 22:19:03,054 DEBUG [facelets.viewhandler] (http-0.0.0.0-8080-2) Took
24445ms to build view: /oconsole/appfile.xhtml
2011-08-24 22:19:09,377 DEBUG [facelets.viewhandler] (http-0.0.0.0-8080-2) Took
6323ms to render view: /oconsole/appfile.xhtml
Run Code Online (Sandbox Code Playgroud)
我不确定我们正在做的事情是否导致整个组件树的重建,或者facelets是否正在确定由于某种原因(过时的缓存?)所需的这种需求.这是我们的堆栈:JBoss 5.1 JSF 1.2 RichFaces.3.3.3.Final Facelets 1.1.15 Seam 2.1.2
我尝试添加一些上下文参数来查看它们是否有用,但它们什么也没做:facelets.BUILD_BEFORE_RESTORE = false facelets.REFRESH_PERIOD = -1或5(如5分钟)
无论如何要告诉我们的观点是否正确缓存?我们没有delcare一个状态保存方法,所以我认为它默认为服务器端.我们所有的请求都发生在长时间运行的对话中.我不确定这是否会影响因为我认为视图会话缓存在会话级别?非常感谢任何帮助,谢谢.
更多调试后更新:
AjaxViewHandler(具有FaceletsViewHandler的成员变量)具有developmentMode = true set.我不确定这是否会导致facelets不缓存任何视图,因此任何更改都会在开发周期中刷新...?很难找到关于facelets/JSF缓存视图以及行为和控制的任何信息.此外,当我添加配置参数时:
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>false</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
这没用!在调试器中,我仍然看到真正的设置.由于我们有很多子视图,我还尝试了com.sun.faces.numberOfLogicalViews和com.sun.faces.numberOfViewsInSession从15(默认值)到1000,这没有任何效果.
我也试过改变客户端状态保存没有任何运气.耗尽了想法......希望有人可以提供帮助....
似乎Seam 2.1自动初始化了RichFaces,我不确定它是否与它有关.....
我有一个JSF2/Richfaces 4项目,其中我想使用其中一个默认皮肤,但我也想使用我自己的自定义样式表设置一些东西的样式.这听起来很简单,但我发现至少在某些情况下,我自己的风格没有被使用.为了明确,这是我的相关web.xml context-params:
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.control_skinning</param-name>
<param-value>enable</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.control_skinning_classes</param-name>
<param-value>enable</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
我的CSS文件包含:
<h:outputStylesheet name="jsp-css.css" library="css" />
Run Code Online (Sandbox Code Playgroud)
一个这样的实际样式定义:
.obsOptBtnSel{
background-color: transparent;
background-image: url('/images/circleY.gif');
background-repeat: no-repeat;
background-position: center;
border: none;
text-align: center;
width: 2em;
height: 2em;
}
Run Code Online (Sandbox Code Playgroud)
而实际按钮使用的风格:
<h:commandButton
value="?"
styleClass="#{obs.observation.observationExtent == -1.0 ? 'obsOptBtnSel' : 'obsOptBtnUns'}"
id="unknownButton"
/>
Run Code Online (Sandbox Code Playgroud)
所以,人们会认为我会从相关的blueSky皮肤继承样式,然后因为我指定了样式类,所以自定义样式表中提到的任何属性都将被覆盖.
但相反,当我查看Firebug中的元素时,我看到我的styleClass被皮肤指定的覆盖,例如它继续使用blueSky背景图像而不是我的.
我知道我可以通过简单地在样式表中将所有样式放入!important来解决这个问题,但这似乎是一个非常糟糕和不必要的方法来处理这个问题.
我在这做错了什么?还有其他解决方案吗?
我已经从富脸3.3升级到富脸4.2因为ajax不能用于IE9.现在它仍然不起作用.
在收到响应之后IE获得了一个JS错误"SCRIPT58734:Der Vorgang konnte aufgrund des folgenden Fehlers nicht fortgesetzt werden:c00ce56e." 在尝试时
data.responseText=request.responseText
Run Code Online (Sandbox Code Playgroud)
在jsf.js.html?ln = javax.faces&conversationContext = 2,第1行第21747行
我认为这是因为一个不完整的HTTP标头
Content-Type: text/xml;charset=UTF8
Run Code Online (Sandbox Code Playgroud)
应该
Content-Type: text/xml;charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
这是服务器的原始响应
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: JSF/2.0
Cache-Control: no-cache
Content-Type: text/xml;charset=UTF8
Content-Length: 293
Date: Tue, 17 Apr 2012 15:25:22 GMT
<?xml version='1.0' encoding='UTF8'?>
<partial-response><changes><update id="outtest"><![CDATA[<span id="outtest"><span class="outhello">Hello !</span></span>]]></update><update id="javax.faces.ViewState"><![CDATA[2809980525147413088:295565165947012503]]></update></changes></partial-response>
Run Code Online (Sandbox Code Playgroud)
我正在使用
javaee-web-api 6
myfaces-orchestra-core 1.4
Hibernate 4.1
Spring 3.1.1
Richfaces 4.2.0
Primefaces 3.2
jsf-api+impl 2.1.7
Run Code Online (Sandbox Code Playgroud)
jstl 1.2
并在tomcat 7上运行
编辑:现在我确定它的标题.我在charles-proxy中设置了一个断点并手动编辑了响应头,编辑后的http头IE9显示了正确的结果,没有任何错误
鉴于此数据表(自然工作):
<rich:dataTable var="var" value="#{values}">
<rich:column>
<f:facet name="header">
HEADER
</f:facet>
<h:outputText value="#{var}" />
</rich:column>
</rich:dataTable>
Run Code Online (Sandbox Code Playgroud)
如果我定义一个自定义组件(在语法和资源/组件下的正确位置也可以):
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:composite="http://java.sun.com/jsf/composite">
<!-- INTERFACE -->
<composite:interface>
<composite:attribute name="val" />
</composite:interface>
<!-- IMPLEMENTATION -->
<composite:implementation>
<rich:column>
<f:facet name="header">
HEADER
</f:facet>
<h:outputText value="#{cc.attrs.val}" />
</rich:column>
</composite:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
为什么以下不起作用?
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition template="/WEB-INF/templates/default.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:my="http://java.sun.com/jsf/composite/components">
<ui:define name="content">
<rich:dataTable var="var" value="#{values}">
<my:mycolumn val="#{var}"/>
</rich:dataTable>
</ui:define>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)
你知道我怎么能让它工作(我想定义自己的列并保存代码)?非常感谢!再见
是否有一种方便的方法将参数传递给从资源包到除h:outputFormat以外的组件的消息?
例如,这是合法的:
<h:outputFormat value="#{myBundle['parametricMessage']}">
<f:param value="#{myBundle['someParameterValue']}"/>
</h:outputFormat>
Run Code Online (Sandbox Code Playgroud)
但我需要一个按钮,像这样(这将无法工作):
<h:commandButton value="#{myBundle['parametricMessage']}">
<f:param value="#{myBundle['someParameterValue']}"/>
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用链接而不是按钮,我可以通过托管bean中的属性来实现,但在这个问题中,我正在寻找一种方便的方式来使用按钮...
我正在使用RichFaces 3.3.3,JSF2,facelets.
我正在开始一个涉及使用JSF 2.0的新项目.从我最初的阅读开始,该项目的Mojarra和Apache实现涵盖了您将需要的基本组件.
但是我知道用户可以通过面板选项卡,手风琴,滑块等更好的演示来寻求gui ...目前,我还有其他实现,Primefaces,RichFaces和Icefaces.
但我找不到一篇好文章,讨论三者中最好的一篇.
我之前使用过Spring MVC但是我使用JqueryUI来创建这些小部件.既然我是基于组件的框架,我想使用最好的JSF实现.
我想知道诸如性能/互操作性/易用性/支持等指标.
很抱歉,如果我的问题可能含糊不清,但在选择我的JSF供应商实施之前,我想听听意见.
谢谢.
f:ajax和a4j:ajax标签之间有什么显着差异吗?
我知道A4J:从RichFaces的4 AJAX基于天然F:AJAX JSF2标签添加一些属性f中未发现:阿贾克斯一样onbegin,onbeforedoupdate,bypassUpdates,limitRender,status和focus,但是当我只需要发送一个简单的Ajax请求或部分使用哪一个渲染?f:ajax和a4j:ajax之间是否存在性能问题?
单击确认按钮时,我需要刷新当前页面.我试图在互联网上找到答案,但很少或根本没有成功.如果有一种方法可以从前端(JSF)而不是从支持bean更新它,那将是很好的,但是,我将把这两个答案作为解决方案.
我的命令按钮如下所示:
<a4j:commandButton id="deleteButton" styleClass="simpleButtonRed"
value="#{msg['common.delete']}"
execute="@this" render="@none" limitRender="true" >
<adn:confirm
id="confirmButtonas"
message="#{msg['common.delete.confirm']}"
confirmAction="#{messagesListBean.deleteMessages}"
confirmLabel="#{msg['common.confirm']}"
confirmBtnStyleClass="mainButtonGreen"
confirmImmediate="true"
confirmRender="errorMessageOuterPanel"
onConfirmComplete="if(#{!messagesListBean.operationCompleted}) {
#{rich:component('errorPanel')}.show();}"/>
</a4j:commandButton>
Run Code Online (Sandbox Code Playgroud)