【问题标题】:Why this dialog doesn't pop up?(JSF2.0+PRIMEFACES)为什么这个对话框不弹出?(JSF2.0+PRIMEFACES)
【发布时间】:2011-07-26 16:40:24
【问题描述】:

我想在单击表格行时弹出一个对话框,但它不起作用。(primefaces 组件 p:dataTable 和 p:dialog)而且看起来 selectioMode 无法正常工作。为什么会这样?

JSF 页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:p="http://primefaces.prime.com.tr/ui">
    <ui:composition template="WEB-INF/templates/BasicTemplate.xhtml">
<ui:define name="resultsForm2">
<h:form enctype="multipart/form-data">              
    <p:dataTable var="garbage" value="#{resultsController.allGarbage}"  dynamic="true" paginator="true" paginatorPosition="bottom" rows="10"
                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink}  {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                     rowsPerPageTemplate="5,10,15" selection="#{resultsController.selectedGarbage}" selectionMode="single"
                      onRowSelectStart="fileDialog.show()">
            <p:column>
                <h:outputText value="#{garbage.filename}"/>
            </p:column>
        </p:dataTable>            
    </h:form>
    <p:dialog widgetVar="fileDialog">
        <h:outputText value="Dialog open"/>
    </p:dialog>   
</ui:define>
   </ui:composition>
</html>

这里是托管 bean:

   @ManagedBean
   @ViewScoped
   public class ResultsController implements Serializable{
@EJB
private ISearchEJB searchEJB;

private Garbage garbage;

private List<Garbage> allGarbage;

private Garbage selectedGarbage;

public List<Garbage> getAllGarbage() {

    allGarbage = new ArrayList<Garbage>();
    for(Garbage g :searchEJB.findAllGarbage()) {
        allGarbage.add(g);
    }
    return allGarbage;
}   

public void setAllGarbage(List<Garbage> allGarbage) {
    this.allGarbage = allGarbage;
}


public Garbage getGarbage() {
    return garbage;
}

public void setGarbage(Garbage garbage) {
    this.garbage = garbage;
}   

public void onRowSelect(SelectEvent event){ 
    garbage = (Garbage)event.getObject(); 
}

public Garbage getSelectedGarbage() {
    return selectedGarbage;
}

public void setSelectedGarbage(Garbage selectedGarbage) {
    this.selectedGarbage = selectedGarbage;
}   

还请注意,在输出中我可以看到值,但是当我单击一行时,它会变成彩色但没有弹出对话框(另外我看起来我可以单击多行,这不应该像因为我使用 selectionMode="single"):

【问题讨论】:

    标签: java jsf jakarta-ee jsf-2 primefaces


    【解决方案1】:

    你看过这个吗?

    http://www.primefaces.org/showcase/ui/datatableRowSelectionSingle.jsf

    您可以使用数据表页脚中的按钮来调度操作。 您必须通过处理 Action 将对话框设置为可见。

    希望这会有所帮助。

    【讨论】:

    • 不,我不能那样做,我团队的设计师希望它在单击行时工作,他们说这样对用户更友好。我刚刚在列内尝试了 ,但是当我单击浏览器时会显示:- 213543501213498845:-6468415484{"validationFailed":false} 那是怎么回事?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多