我可以将表达式传递给JSF 2 passthrough-attributes吗?以下代码无效.#{country.isoCode}不评估表达式.
<h:selectOneMenu value="#{bean.selectedCountry}" styleClass="selectlist">
<f:selectItems
value="#{bean.countries}" var="country"
itemLabel="#{country.countryName}"
pt:data-icon="flag flag-#{country.isoCode}"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
我正在使用命名空间
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
Run Code Online (Sandbox Code Playgroud)
和bootstrap-select.属性"data-icon"用于显示图像.看到:
http://silviomoreto.github.io/bootstrap-select/#data-icon
渲染输出:
<i class="glyphicon flag flag-"></i>
Run Code Online (Sandbox Code Playgroud) 我正在使用JSF 2.0(mojarra)+ primefaces开发一个Web应用程序.在过去,我成功地使用了jstl库的[c:set]标签来存储一些临时数据或从其他标签输出.
在我目前的情况下,我想再次使用它,但它不能正常工作,我不知道为什么.在下面的例子中它起作用但特别有效.为什么案例2不能正常工作?
<h:form id="userAdministration">
<p:messages id="messages" showDetail="true" />
<p:dataTable id="userTable" selectionMode="single" var="user" value="#{users}">
<p:column>
<f:facet name="header">
<h:outputText value="#{message.user_table_header_id_column}" />
</f:facet>
<h:outputText value="#{user.id}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{message.global_table_header_action_column}" />
</f:facet>
<p:commandButton type="push" onclick="#{user.loginname}DeleteConfirmation.show()" value="#{message.global_table_action_delete}" image="ui-icon-trash">
<f:setPropertyActionListener value="#{user}" target="#{userAdministrationController.selectedUser}" />
</p:commandButton>
<!-- 1. WORKS FINE, STORED VALUE IS "loginname" -->
<c:set var="deleteConfirmationMessage" value="#{user.loginname}"></c:set>
<!-- 2. VALUE IS "!!!" AND NOT "loginname !!!" -->
<c:set var="deleteConfirmationMessage2">
<h:outputText value="#{user.loginname}" />!!!
</c:set>
<!-- 3. WORKS FINE (OUTPUT "loginname") -->
<h:outputText value="#{user.loginname}" …Run Code Online (Sandbox Code Playgroud) 我正在使用icefaces选择菜单从用户列表中选择一个用户,我想为每个用户重复selectItem这里是我尝试的:
<ice:selectOneMenu id="users">
<ui:repeat value="#{user.getUserList()}" var="user">
<f:selectItem itemLabel="#{user.name}" itemValue="#{user.id}"/>
</ui:repeat>
</ice:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
的UserBean:
@Component("user")
@Scope("view")
Public class UserBean{
Public List<User> getUserList() throws Exception {
return userService.getAllUsers();
}
}
Run Code Online (Sandbox Code Playgroud)
注意: UserBean不包含属性id,它们存在于用户实体中的名称.请指教,谢谢.
我正在使用Primefaces向导组件.在一个选项卡上,我基于先前的选项卡输入(用户类型)动态创建输入框.输入框文本标签是从列表派生的.在我的支持bean中,我有一个地图,其中包含输入标签作为键,输入框输入作为值.
点击下一步,我想用用户输入(对应键)更新地图(值)
<c:forEach items="#{gdsiGeodataBean.actionCommand.fields}" var="reqs">
<h:outputLabel for="#{reqs.name}" value="#{reqs.name}:* " />
<pou:inputText value="#{gdsiGeodataBean.actionCommand.values['reqs.name']}" required="true" requiredMessage="Input is required."/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我的支持豆:
private List<RequiredParam> fields; // +getter (no setter required)
private Map<String, String> values; // +getter (no setter required)
public CommandAction(String actionName, String actionParams, String context) {
this.actionName = actionName;
this.actionParams = actionParams;
this.contextName = context;
//Set up parameters
getRequiredParams();
getOptionalParams();
fields = getFields();
values = new HashMap<String, String>();
}
Run Code Online (Sandbox Code Playgroud)
基本上我想要的是使用textinput框中的用户输入更新地图值.
h:selectOneRadio的布局可以是水平的也可以是垂直的,所以有一种方法可以做一些自定义布局.例如,不是显示8个单选按钮,而是将它们显示为2行,每行4个?请在PrimeFaces p:selectOneRadio解决方案旁边提供答案,它使用CSS3导致IE8显示矩形形状的单选按钮.
我正在使用仪表板应用程序,我必须检索一组记录并在动态表格框中显示.页面框架长度是固定的.现在可以初始化列和行.它应该看起来像这样的样本:

目前我正在使用数据表进行显示,但它会将所有数据打印在一列中.我如何将代码更改为上述模式?
<o:dataTable id="tabBlSearch" var="item"
onkeyup="handleLeftRightArrowOnDataTable('frmDashBoard:tabBlSearch')"
value="#{bLDashBoardAction.listBondLoc}">
<o:column style="width: 20px;">
<h:outputText value="#{item.awb}" />
</o:column>
</o:dataTable>
Run Code Online (Sandbox Code Playgroud) 我一直注意到页面中使用的所有bean都在更新页面的任何一小部分时被不必要地实例化.好的,它们是请求作用域,因此将在每个请求上实例化,但只有当正在更新的页面部分需要那些bean时才应该这样做.不是吗?
为什么JSF中这个糟糕的设计?
我找到了造成这种行为的真正罪魁祸首,我f:event type="preRenderView"在网页的某些地方.这实际上导致重新实例化这些bean以调用监听器.修复是用来f:event type="preRenderComponent"代替.这减少了每个请求中大多数不必要的bean实例化,但我仍然看到一些不必要的bean实例化.
我很好奇如何获取一个元素的行号<p:dataTable>.
<p:dataTable id="userDataTable" value="#{bean.rows}" rowIndexVar="rowIndex">
<p:column headerText="RowCounter">
<p:commandLink id="row#{rowIndex+1}" actionListener="#{bean.getRows}">
<h:outputText value="Show Row #{rowIndex+1}" />
</p:commandLink>
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
豆:
public void getRows(ActionEvent ae) {
System.out.println(ae.getComponent().getId().toString());
}
Run Code Online (Sandbox Code Playgroud)
始终打印row1,无论<p:commandLink>点击哪一个.我错过了什么?
我有一个页面,我在其中渲染一些 h:panelGroup 面板。这些面板在启动时作为在插件注册表中注册的插件来实现。插件 api 的一部分是一个自定义 jsf 组件,我在其中获取扩展点的注册插件,并按路径包含它们的 Facelet 模板:
<c:forEach items="#{pluginRegistry.getPlugins(point)}" var="extension">
<ui:include src="#{extension.path}" />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我包含面板的页面如下所示:
<h:panelGrid id="dashboard" columns="3">
<cmf:insertPageFragments point="dashboardExtensionPoint" />
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)
对于每个面板,都有如下所示的 Facelet 模板:
<rich:panel id="caseDetailsPanel" header="panel label">
<!-- panel content -->
</rich:panel>
Run Code Online (Sandbox Code Playgroud)
现在的问题是,pluginsRegistry 返回的列表中的第一个面板是在页面中呈现的,其中包含提供的 id,例如 formId:caseDetailsPanel。其余的都生成了像 formId:j_idt223 这样的 id!显然,如果我想重新渲染一些面板,我不能这样做。
当环境是 jboss AS 7.1 和 JSF 2.1、richfaces 4.2.3.Final 时,就会发生这种情况。当部署在 jboss-eap-6.1 上时,一切看起来都很好,但现在我无法使用这个 jboss 版本。
关于如何解决此问题有什么建议吗?
我必须以恐怖的方式制作一份表格清单.它们中的每一个都具有可变数量的列(具有固定行).
为了执行此操作,我首先将<p:panelGrid>内部放入<ui:repeat>:所以我正确地生成了一个表列表.
然后,为了恐怖地制作柱子,我试着把它们放在一个 <ui:repeat>或一个 <c:forEach>里面<p:panelGrid>.在结果中我没有获得任何行.
我在这里写了一个小例子.在bean中testBackingBean,我已定义(并初始化)变量ArrayList<ArrayList<String>> tables.这是不会产生预期结果的xhtml:
<ui:repeat var="table" value="#{testBackingBean.tables}">
<p:panelGrid>
<f:facet name="header">
<p:row>
<p:column >header of #{table}</p:column>
</p:row>
</f:facet>
<p:row>
<c:forEach var="row" items="${table}">
<p:column>#{row}</p:column>
</c:forEach>
</p:row>
</p:panelGrid>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
值得注意的是,标题行正确转换#{table}为字符串.问题是我看不到任何数据行.
此外,如果我使用<table>而不是<p:panelGrid>一切工作如期望的那样.
另外,我尝试了不同的排列<c:forEach>并<ui:repeat>没有更迭.
那么,我怎样才能产生更多的表格(使用素数面)并设置一个dinamical数量的列?
谢谢!
编辑:我想使用两个<c:forEach>,但即使只有一个<c:forEach>我得到一个空的结果.事实上,如果我尝试以下xhtml:
<c:forEach items="${testBackingBean.tables}" var="tabella">
current element: #{tabella}
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
然后我得到一个空的结果.(我知道,这是一个不同的问题)