Ajax дерево не загружает страницу - PullRequest
0 голосов
/ 18 августа 2011

Я пытался чередовать страницы, используя ui:include при щелчке триодов ajax (PrimeFaces).Первая страница, которая загружается по умолчанию, загружается должным образом со всеми активными компонентами, но когда я нажимаю на другой триод, чтобы отобразить другую страницу, последняя страница загружается ненормально, как будто отображается диалоговое окно внизу и руки страницы.

Я чувствую, могу ли я заставить страницу перезагрузиться частично по умолчанию на nodeSelect

index.jsf (загружается при входе в систему)

<p:layoutUnit position="west" size="270" header="Menu" collapsible="false" resizable="true">
    <p:ajaxStatus style="width:16px;height:16px;">
        <f:facet name="start">
            <h:graphicImage value="../design/ajaxloading.gif"/>
        </f:facet>
        <f:facet name="complete">
            <h:outputText value=""/>
        </f:facet>
    </p:ajaxStatus>
    <h:form id="appsMainControl">
        <ui:include src="/ui/appServices.jsf"/>
    </h:form>
</p:layoutUnit>
<p:layoutUnit position="center">
    <h:form id="centerControl">                    
        <ui:include src="/ui/#{amb.appToGet}.jsf"/>                   
    </h:form>
</p:layoutUnit>

Компонент дерева просмотра с действием слушателя.При выборе узла я хочу, чтобы дочерняя страница загружалась соответствующим образом

<p:layoutUnit position="west" size="270" header="Menu" collapsible="false" resizable="true">
    <p:ajaxStatus style="width:16px;height:16px;">
        <f:facet name="start">
            <h:graphicImage value="../design/ajaxloading.gif"/>
        </f:facet>
        <f:facet name="complete">
            <h:outputText value=""/>
        </f:facet>
    </p:ajaxStatus>
    <h:form id="appsMainControl">
        <ui:include src="/ui/appServices.jsf"/>
    </h:form>
</p:layoutUnit>
<p:layoutUnit position="center">
    <h:form id="centerControl">                    
        <ui:include src="/ui/#{amb.appToGet}.jsf"/>                   
    </h:form>
</p:layoutUnit>

Компонент поддержки:

public void onNodeSelect(NodeSelectEvent event) throws Exception {
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();

    try {
        appToGet = appsMainDAO.appToGet(event.getTreeNode().toString());
        // ec.redirect("index.jsf");
        // System.out.println("Got "+appToGet);
        // appSubList = appsMainDAO.appsSubServicesList(appToGet, "Forms");
    } catch (Exception ex) {
        ex.printStackTrace();
        Logger.getLogger(appsMainBean.class.getName()).log(Level.SEVERE, null, ex);
    } finally {

    }

}

1 Ответ

2 голосов
/ 18 августа 2011

Не делай этого.Вы теряете JSF в неправильном направлении и, таким образом, идете к большой катастрофе.

Невозможно объяснить весь жизненный цикл здесь, но - пока вы действительно не разберетесь в JSF - просто предположите, что лицевые страницы _not_suppposed_ работают как HTML-страницы.

Вместо этого они должныработают как оконные приложения, где у вас есть определенное количество виджетов, которые на самом деле не появляются или не исчезают - их можно вкладывать во вкладки, они могут быть отключены, но они остаются на месте с самого начала.

Если есть конечное число вещей, которые нужно включить, самый простой вариант - включить их все и добавить несколько визуализированных = "# {gui.current == 'component1'}", поэтому только один из компонентоввиден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...