我一直在我的 PrimeFaces 应用程序上收到 javax.el.PropertyNotFoundException: Target Unreachable, identifier 'i' resolved to null,当我点击应该删除图像的 commandButton 时,我似乎找不到原因。我检查了 this 答案,但没有什么是我的问题。当我 删除或不单击 时,commandButton 应用程序可以正常工作,并且 var="i" 对所有其他 DOM/PF 元素都可以完美运行,所以我被困在这里。
提前致谢。

这是我的代码:

<h:form>
    <div id="visor-imagenes">
        <p:contentFlow value="#{imageHandler.personalImgList}"
                       var="i" id="contentFlow"
                       styleClass="contentWrapp">

            <p:graphicImage value="#{fileUploadMB.image}"
                            styleClass="content"
                            onclick="clickFlow(this, event)">

                <f:param name="id" value="#{i.id}"/>
                <h:inputHidden  value="#{i.imageDescription}"/>

                <p:commandButton icon="ui-icon-trash"
                                 action="#{imageHandler.deleteImage(i.id)}"
                                 update="contentFlow">
                </p:commandButton>
            </p:graphicImage>
            <div class="caption">#{i.imageName}</div>
        </p:contentFlow>
    </div>
</h:form>

bean 角,扁 bean :
public void deleteImage(String i) {
    this.imgFacade.deleteImage(i);
}

我尝试将 <f:param<f:setPropertyActionListener 用于 commandButton 中的 i 值,但这些都不起作用。

commandButton 设置为 <p:graphicImage 会引发相同的错误:
<p:contentFlow value="#{fileUploadMB.personalImgList}" var="i" id="contentFlow" styleClass="contentWrapp">
     <p:commandButton icon="ui-icon-trash"
                 action="#{fileUploadMB.deleteImage}"
                 update="contentFlow">
           <f:param name="id" value="#{i.id}"/>
     </p:commandButton>
         <p:graphicImage value="#{fileUploadMB.image}"  styleClass="content" onclick="clickFlow(this, event)">
             <f:param name="id" value="#{i.id}"/>
             <h:inputHidden  value="#{i.imageDescription}"/>
        </p:graphicImage>
      <div class="caption">#{i.imageName}</div>
</p:contentFlow>

另外,我已经覆盖了图像的 onClick 事件,因为 默认 单击重定向到图像文件。
       <script>
        function clickFlow(item, e) {
            if ($(item).parent().hasClass('active')) {
                e.stopImmediatePropagation();
                var text = $(item).siblings("input[type=hidden]").attr('value');
                $('.image-linker:first-child').attr('href', $(item).attr('src'));
                $('.image-linker:first-child').attr('title', text);
                $('.image-lightboxer:first-child').attr('src', $(item).attr('src'));
                $('.image-linker:first-child').click();
            }
        }
    </script>
<h:inputHidden value="#{i.imageDescription}" 允许动态填充 lightbox title="" 属性。

我不这么认为,但是被覆盖的 onClick 事件是否会对这个问题产生任何影响?

最佳答案

<p:contentFlow>not 一个 UIData 组件。因此,它不能在组件树访问期间保存和恢复迭代状态(在 UICommand 组件解码期间需要)。您基本上需要在渲染响应期间将图像的唯一标识符打印为 HTTP 请求参数。

<p:commandButton icon="ui-icon-trash"
                 action="#{imageHandler.deleteImage}"
                 update="contentFlow">
    <f:param name="id" value="#{i.id}"/>
</p:commandButton>
public void deleteImage() {
    String i = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
    this.imgFacade.deleteImage(i);
}

关于jsf - <p :commandButton> referencing <p:contentFlow var ="i"> throws javax. el.PropertyNotFoundException : Target Unreachable, 标识符 'i' 解析为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31283053/

10-11 23:01