سؤال

أنا تواجه مشكلة مع جسف ، لدي جزء التي يتم تقديمها على جميع الصفحات ، ويعرض أحدث إدخالات جدول (~ 10 بنود).وأريد إعادة استخدامه على صفحة تسرد جميع الإدخالات.

أضع قاعدة مقدمة لمنع ظهور إصدار جميع الصفحات للعنصر في هذه الصفحة على وجه التحديد ، ولكن لا يزال لا يذهب ، أحصل على خطأ "معرف مكرر موجود في العرض".يبدو أن المشكلة تكمن في حقيقة أن معالج جسف التحقق من صحة المعرفات قبل التحقق من صحة تلك التي سيتم تقديمها حقا.

فقط للحصول على معلومات ، وأنا باستخدام نهاية طلب أوري لتحديد ما إذا كان المقدمة صحيحة أو خاطئة.

آه ، وحاولت استخدام ج: إذا ، لكنها كانت عديمة الفائدة أيضا.

تحرير:

نموذج التعليمات البرمجية المطلوبة...

لدي هذا الجزء شتمل ("تابلينكلود.شتمل"):

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
    xmlns:p="http://primefaces.org/ui"
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
    <ui:fragment>
        <p:dataTable var="item" value="#{bean.items}"
                     emptyMessage="#{msg['table.empty']}"
                     widgetVar="table" id="listItems" styleClass="tableItems">
            <p:column styleClass="span1" style="text-align: center;">
                <f:facet name="header">
                    <i class='fa-icon-picture'/>
                </f:facet>
                <p:commandLink action="#{bean.itemSelected(item)}" value="#{item.name}"/>
            </p:column>
        </p:dataTable>
    </ui:fragment>
</ui:composition>

ثم أركض في كل صفحة هذا:

<ui:include src="./tableInclude.xhtml">

حاولت أن أفعل هذا:

<ui:fragment rendered="#{request.requestURI != '/context/don't_render_here.xhtml'}">
    <ui:include src="./tableInclude.xhtml">
</ui:fragment>

ولكن ما زلت أتلقى خطأ المعرف المكرر حتى مع ذلك عند الوصول إلى " لا تفعل هنا.صفحة "شتمل".

هل كانت مفيدة؟

المحلول

ليس أفضل حل ، ولكن سريعة وقذرة:استبدال ui:fragment مع f:subView

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top