首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectOneMenu依赖于其他selectOneMenu - Jsf

SelectOneMenu依赖于其他selectOneMenu - Jsf
EN

Stack Overflow用户
提问于 2015-11-11 10:47:39
回答 1查看 714关注 0票数 0

我有一个Webapp与科技:野蝇,JSF,Primefaces

我得选一个菜单。第一个selected菜单加载所有仓库,第二个selected菜单加载所有依赖于所选仓库的产品。

我想实现这种可能性,因为我没有必要选择一个仓库。我想有这样的可能性,我没有选择一个仓库,逻辑上,如果我不选择仓库,产品选择一个菜单必须被禁用。

如果提交表单时没有仓库,则应该将其写入数据库null中,用于仓库,对于产品也应为null。

我的第一次尝试是在仓库的select菜单中执行以下条目。

代码语言:javascript
复制
<f:selectItem itemLabel="---" itemValue="#{null}" value="#{null}"/>

现在,如果没有选择仓库,我不知道如何将仓库选择一个菜单的值设置为null。

代码语言:javascript
复制
value="#{warehouseDataActions.actualWarehouse}" --> how to set to null 

第二个问题是,在第一个select菜单的Ajax中,我必须添加Attribute = true。如果添加以下行,则此属性仅对我来说是蜜源。我不知道为什么?

代码语言:javascript
复制
<f:selectItem itemLabel="---" itemValue="#{null}" value="#{null}"/>

所以我有三个问题:

如何将actualWarehouse和.actualWriteservice.warehouseProduct设置为空?

  1. 如果我还没有选择以上的仓库(-),如何禁用产品选择一个菜单?
  2. 如果我添加项目,为什么我的Ajax请求在仓库中选择一个菜单不起作用?

#{texts'writeservice.product'}

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 19:21:19

  1. 您需要处理转换器(ccWarehouseConverter)中的--外壳. @重写公共对象getAsObject(FacesContext context,UIComponent组件,String值){ if (值为==空的value.length() == 0-value.equalsIgnoreCase(“--”)){返回null;}返回databaseService.getWarehouseByName(值);}
  2. 禁用selectOne #{texts'writeservice.product'}

为了使ajax更新正常工作,必须将仓库和产品封装在母面板中,然后更新母版:

代码语言:javascript
复制
<h:panelGroup id="motherPanel" layout="block">
    <p:selectOneMenu style="width:151px" value="#{warehouseDataActions.actualWarehouse}">
        <f:converter converterId="ccWarehouseConverter" />
        <f:selectItem itemLabel="---" itemValue="#{null}" value="#{null}"/>
        <f:selectItems
        value="#{warehouseDataActions.allWarehousesForProject}"
        var="warehouse"
        itemLabel="#{warehouse.warehouseName}"
        itemValue="#{warehouse}" />
          <p:ajax listener="#{warehouseProductDataActions.warehouseProductsForWarehouse}"
        update="motherPanel" />
      </p:selectOneMenu>
      <p:panelGrid>
          <p:outputLabel for="products">#{texts['writeservice.product']}</p:outputLabel>
          <p:selectOneMenu id="products" style="width:151px" disabled="#{empty warehouseDataActions.actualWarehouse}"
            value="#{writeserviceDataActions.actualWriteservice.warehouseProduct}">
            <f:converter converterId="ccWarehouseProductConverter" />
            <f:selectItems
                value="#{warehouseProductDataActions.warehouseProductsResult}"
                var="warehouseProduct" itemLabel="#{warehouseProduct.product.productName}"
                itemValue="#{warehouseProduct}" />
           </p:selectOneMenu>
        </p:panelGrid>
</h:panelGroup>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33648945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档