相关疑难解决方法(0)

在passtrough属性中使用f:selectItems var

我可以将表达式传递给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)

el selectonemenu jsf-2 managed-bean passthrough-attributes

6
推荐指数
1
解决办法
2956
查看次数

JSF 2.0和JSTL使用c:set标签来存储一些临时数据

我正在使用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)

jstl primefaces jsf-2

5
推荐指数
2
解决办法
2万
查看次数

ui:repeat不适用于f:selectItem

我正在使用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,它们存在于用户实体中的名称.请指教,谢谢.

icefaces facelets jsf-2 icefaces-1.8

5
推荐指数
1
解决办法
8204
查看次数

使用向导时,如何将输入框值绑定到支持Bean属性中的映射值

我正在使用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框中的用户输入更新地图值.

jsf binding map primefaces

5
推荐指数
1
解决办法
1万
查看次数

如何自定义布局h:selectOneRadio

h:selectOneRadio的布局可以是水平的也可以是垂直的,所以有一种方法可以做一些自定义布局.例如,不是显示8个单选按钮,而是将它们显示为2行,每行4个?请在PrimeFaces p:selectOneRadio解决方案旁边提供答案,它使用CSS3导致IE8显示矩形形状的单选按钮.

html css jquery jsf

5
推荐指数
1
解决办法
9782
查看次数

在JSF中动态创建表列

我正在使用仪表板应用程序,我必须检索一组记录并在动态表格框中显示.页面框架长度是固定的.现在可以初始化列和行.它应该看起来像这样的样本:

在此输入图像描述

目前我正在使用数据表进行显示,但它会将所有数据打印在一列中.我如何将代码更改为上述模式?

<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)

datatable jsf-2

5
推荐指数
1
解决办法
1万
查看次数

为什么JSF,根据请求更新视图的一部分实例化页面上的所有bean而不是页面的那一部分使用的bean?

我一直注意到页面中使用的所有bean都在更新页面的任何一小部分时被不必要地实例化.好的,它们是请求作用域,因此将在每个请求上实例化,但只有当正在更新的页面部分需要那些bean时才应该这样做.不是吗?

为什么JSF中这个糟糕的设计?

更新:

我找到了造成这种行为的真正罪魁祸首,我f:event type="preRenderView"在网页的某些地方.这实际上导致重新实例化这些bean以调用监听器.修复是用来f:event type="preRenderComponent"代替.这减少了每个请求中大多数不必要的bean实例化,但我仍然看到一些不必要的bean实例化.

java jsf jsf-2

5
推荐指数
1
解决办法
648
查看次数

获取动态元素的p:dataTable中的行号

我很好奇如何获取一个元素的行号<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>点击哪一个.我错过了什么?

jsf primefaces

5
推荐指数
1
解决办法
5571
查看次数

渲染 h:panelGroup 位于 c:forEach 内时出现错误的 id

我有一个页面,我在其中渲染一些 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 版本。

关于如何解决此问题有什么建议吗?

jboss jstl richfaces jsf-2

5
推荐指数
1
解决办法
1346
查看次数

c:在ui:repeat中的forEach inside primefaces(例如p:panelgrid)

我必须以恐怖的方式制作一份表格清单.它们中的每一个都具有可变数量的列(具有固定行).

为了执行此操作,我首先将<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)

然后我得到一个空的结果.(我知道,这是一个不同的问题)

jsf primefaces jsf-2 panelgrid

5
推荐指数
1
解决办法
2万
查看次数