JSF commandlink无法在ui中工作:在dataTable

时间:2015-10-19 18:51:24

标签: jsf jsf-2 primefaces commandlink uirepeat

我在ui中使用JSF commandlink时出现问题:使用子表/数据表重复。

我已经尝试使用带有@PostConstruct方法的视图结构bean加载所有数据但仍然无法正常工作。

我在commandButton/commandLink/ajax action/listener method not invoked or input value not updated中阅读了@BalusC的解释,但仍无效。

我的xhtml:

    <p:column style="text-align:left;">                         
            <p:imageSwitch effect="fade" id="fadeEffect">
                <ui:repeat value="#{item.evidenciaRespostaAsList}" var="image" id="fadeEffectImages">

                    <!-- this commandlink is working as expected -->
                    <p:commandLink update=":form:dlgImage :form:messages :form:msgs" action="#{relatorioAuditoriaViewScopedMBean.setSelectedItem(item)}" oncomplete="PF('dlg').show()">

                    <p:graphicImage value="#{fotoMBean.foto}" width="150" height="100" >
                        <f:param name="fotoNome" value="#{image.descricao}" />
                        <f:param name="fotoType" value="#{image.filetype}" />
                    </p:graphicImage>                                                                               

                    </p:commandLink>
                </ui:repeat>
            </p:imageSwitch>                            
    </p:column>

     <f:facet name="footer">
        <p>Evidências Obrigatórias: #{resposta.produto.descricao} #{resposta.linha.descricao} (#{resposta.evidenciaObrigatoriaList.size()}) </p>
        <p:column>
        <div id="main" class="flex-centralizado">

                <ui:repeat value="#{resposta.evidenciaObrigatoriaList}" var="imagemEvidenciaObrigatoria" id="fadeEffectImagesEvidenciaObrigatoria">

                    <div class="figura">                                                
                            <p>#{imagemEvidenciaObrigatoria.tipoEvidencia.descricao}</p>                                                
                            <p>                         <p:commandLink                                                          
                                    rendered="true"                                                  
                                    update=":form:dlgImageObrigatoria :form:messages :form:msgs" 
                                    action="#{relatorioAuditoriaViewScopedMBean.setSelectedEvidenciaObrigatoria(imagemEvidenciaObrigatoria)}"
                                    actionListener="#{relatorioAuditoriaViewScopedMBean.atualizarFotoEvidenciaObrigatoria}" 
                                    oncomplete="PF('dlgE').show()">

                                    <f:param name="idevidenciaObrigatoria" value="#{imagemEvidenciaObrigatoria.idevidenciaAuditoria}"/>                                                                                                                 

                                    <p:graphicImage rendered="true" value="#{fotoMBean.foto}" width="150" height="100" >
                                        <f:param name="fotoNome" value="#{imagemEvidenciaObrigatoria.descricao}" />
                                        <f:param name="fotoType" value="#{imagemEvidenciaObrigatoria.filetype}" />
                                    </p:graphicImage>                                                   
                                </p:commandLink>
                            </p>                                                                                                                        
                    </div>
                </ui:repeat>

        </div>
        </p:column>                 
    </f:facet>

我的bean是ViewScoped,所有的getter和setter都是默认的。我唯一的问题是facet中的第二个commandlink:footer不会调用action或actionlistener或更新。名为oncomplete的对话框正在加载而没有数据。

@Action Method

    public void setSelectedEvidenciaObrigatoria(EvidenciaAuditoria selectedEvidenciaObrigatoria) {
        this.selectedEvidenciaObrigatoria = selectedEvidenciaObrigatoria;
    }

@ActionListener方法

    public void atualizarFotoEvidenciaObrigatoria(javax.faces.event.ActionEvent event) {
        LOGGER.info("atualizarFotoEvidenciaObrigatoria() called!");


        String idevidenciaObrigatoria = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idevidenciaObrigatoria");
        int id = Integer.parseInt(idevidenciaObrigatoria);

        LOGGER.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> idevidenciaObrigatoria="+id+" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");

    }

更多详情:

  • PF 5.2 with Mojarra 2.1.7。
  • 只有一个h:带有id的表单
  • 我已经尝试过使用sessionscoped并请求范围
  • 我已尝试使用嵌套表单
  • 我已尝试使用/不使用p:columns
  • 我在重复之前已尝试使用面板
  • 我没有错误或例外

任何sugestions?

Ty求助!

0 个答案:

没有答案