如何插入特殊字符,如&和<成JSF组件value的属性?
例如:我想要这样的东西:
<h:outputText value="Tom & Jerry Show" />
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我得到以下异常:
javax.faces.view.facelets.FaceletException:Error Parsing /foo.xhtml:Error Traced [line:15]实体名称必须紧跟在实体引用中的'&'之后.
如果是<,我得到以下异常:
javax.faces.view.facelets.FaceletException:Error Parsing /foo.xhtml:Error Traced [line:15]与元素类型"h:outputText"关联的属性"value"的值不能包含"<"字符.
如何仅使用标准标签(ui:,h:etc)重复JSF中某些内容的输出?换句话说 - 如何在JSF中执行以下PHP代码?我马上想利用ui:repeat它,但它需要收集 - 我只有号码.
for ($i = 0; $i < 10; $i++) {
echo "<div>content</div>";
}
Run Code Online (Sandbox Code Playgroud) 它发生前我ui:decorate在功能一样ui:include,只是你也可以通过ui:param与ui:define被包含文件.
我疯了吗?
编辑:虽然事实上你也可以传递ui:param给一个ui:include文件,但事实证明我已经在做了.也许你也可以通过ui:define,我会在这里检查和编辑.
我发现了一些像这样的类似问题,但是有很多方法可以做到这让我更加困惑.
我们正在获取XML正在阅读的文件.其中XML包含有关需要显示的某些表单字段的信息.
所以我创建了这个DynamicField.java包含我们需要的所有信息的自定义:
public class DynamicField {
private String label; // label of the field
private String fieldKey; // some key to identify the field
private String fieldValue; // the value of field
private String type; // can be input,radio,selectbox etc
// Getters + setters.
}
Run Code Online (Sandbox Code Playgroud)
所以我们有一个List<DynamicField>.
我想迭代这个列表并填充表单字段,使它看起来像这样:
<h:dataTable value="#{dynamicFields}" var="field">
<my:someCustomComponent value="#{field}" />
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
然后<my:someCustomComponent>将返回相应的JSF表单组件(即label,inputText)
另一种方法是只显示<my:someCustomComponent>,然后返回一个HtmlDataTable带有表单元素.(我认为这可能更容易).
哪种方法最好?有人可以告诉我一些链接或代码,它显示我如何创建这个?我更喜欢完整的代码示例,而不是像"你需要一个子类javax.faces.component.UIComponent" 这样的答案.
我正在使用JSF/ICEFaces,我需要从动态树结构生成一个表,其中包含未知(运行时)的行数和列数.该表必须具有width: 100%;占据其容器内的所有空间.
我能够生成表所需的所有标记,但我发现单元格的宽度不一样.
width: (100/numberOfColumns)%如果我知道我正在渲染的元素数量,那么设置CSS会很容易.不幸的是,我不能修改我的支持bean返回的类,所以我只能用ui:repeater组件迭代它们.
我不想使用Javascript方式.尽可能清晰的代码.
我在实现两个SelectOneMenu控件时遇到问题,第二个控件中的数据取决于第一个控件的选择.primeFaces展示的这个例子与我想要实现的几乎相同:http://www.primefaces.org/showcase-labs/ui/pprSelect.jsf
除了我必须从数据库中获取数据.
上面的示例在同一个项目中正常工作.我使用的是NetBeans 7.0和GlassFish 3.1以及PrimeFaces 3.0.M2,这是最新一次(2011年6月20日).
附加了JSF页面和托管bean的源代码.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head><title>Facelet Title</title></h:head>
<h:body>
<p:log />
<center>
<h:form>
<h:outputText value="State: "/>
<p:selectOneMenu id="selectState" value="#{stateCityBean.selectedStateArray}">
<f:selectItem itemLabel="Select Any" itemValue="Empty String"/>
<p:ajax update="selectCity" listener="#{stateCityBean.updateCityMap}"/>
<f:selectItems value="#{stateCityBean.stateMap}" />
</p:selectOneMenu>
<p></p>
<h:outputText value="City: "/>
<p:selectOneMenu id="selectCity" value="#{stateCityBean.selectedCityArray}">
<f:selectItem itemLabel="Select Any" itemValue="Empty String"/>
<f:selectItems value="#{stateCityBean.cityMap}"/>
</p:selectOneMenu>
</h:form>
</center>
</h:body>
Run Code Online (Sandbox Code Playgroud)
StateCityBean.java
package com.xyz.mbeans;
import com.iwizability.priceinfo.dao.*;
import com.iwizability.priceinfo.pojo.*;
import java.util.LinkedHashMap;
import …Run Code Online (Sandbox Code Playgroud) 我在将我的JSF应用程序转换为可书籍标记的页面方面取得了很大进展,但我想知道我是否以正确的方式进行操作.一个问题是f:元数据标签是否有最佳实践位置?
我的典型Facelets客户端页面如下所示:
<ui:composition template="./pattern.xhtml">
<ui:define name="content">
<f:metadata>
<f:viewParam name="userId" value="#{bean.userId}" />
<f:viewParam name="startRecord" value="#{bean.startRecord}" />
<f:viewParam name="pageSize" value="#{bean.pageSize}" />
<f:viewParam name="sort" value="#{bean.sort}" />
</f:metadata>
<h1>Data Table</h1>
etc
Run Code Online (Sandbox Code Playgroud)
所以f:metadata和child f:viewParam标签在我的页面正文中遇到.我的pattern.xhtml模板还有一个部分(名为"header"),可以将这些标记放在标题部分.它们应该放在那里吗?它是否有所作为,或者我是否设置了一些我尚未见过的副作用?
我正在使用带有Richfaces和Facelets的JSF 1.2.
我有一个应用程序,有许多会话范围的bean和一些应用程序bean.
用户使用Firefox登录.创建一个ID ="A"的会话; 然后他打开Chrome并使用相同的凭据再次登录.创建ID ="B"的会话.
当创建会话"B"时,我希望能够销毁会话"A".怎么做?
也.当Firefox中的用户做任何事情时,我希望能够显示一个弹出窗口或某种通知,说"你已经登出,因为你已经从其他地方登录".
我有一个sessionListener,可以跟踪创建和销毁的会话.问题是,我可以将HTTPSession对象保存在应用程序范围的bean中,并在检测到用户已登录两次时将其销毁.但有些东西告诉我这是错误的,不会奏效.
JSF是否跟踪服务器端的某些会话?如何通过标识符访问它们?如果没有,如何在用户登录两次时首次登录?
是否有可能把JSF2 Facelets文件与普通的内容为JAR从内部如其他Web应用程序中使用<ui:composition template>,<ui:include src>,<cc:implementation>等?如果是,我怎样才能实现这一目标?是否需要一些额外的配置?
如何自定义验证失败时出现的验证消息?
这是我的代码:
<h:form>
<p><h:inputText
id="userNo"
title="Type a number from 0 to 10:">
<f:validateLongRange
minimum="3"
maximum="6"/>
</h:inputText>
<h:commandButton id="submit" value="Submit"
action="response"/>
</p>
<h:message showSummary="true" showDetail="false"
id="errors1"
for="userNo"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)
目前消息如下所示:
j_idt10:userNo: Validation Error: Specified attribute is not between the expected values of 3 and 6.
Run Code Online (Sandbox Code Playgroud)
哪个不是特别用户友好.
facelets ×10
jsf ×9
jsf-2 ×3
ajax ×1
components ×1
composition ×1
css ×1
html ×1
jar ×1
java ×1
message ×1
metadata ×1
modularity ×1
primefaces ×1
richfaces ×1
session ×1
templating ×1
uirepeat ×1
validation ×1
xhtml ×1