سؤال

لقد قمت بإنشاء مكون Facelet لتمديد H: CommandLink (لإضافة بعض الوظائف والزوايا المستديرة).

<ui:composition 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">
    <span class="btn-left btn-corners">&#160;</span>
    <span type="submit" class="submit">
        <h:commandLink id="#{id}" value="#{label}" action="#{action}" />
    </span>
    <span class="btn-right btn-corners">&#160;</span> </ui:composition>

يمكن الوصول إلى مكون الجديد باستخدام

<my:commandLink id="continue" label="continue" action="#{applyBacking.submit}"/>

ورمز جافا هو

public String submit(){
    ...
}

ومع ذلك ، فإنه يعطيني خطأ "لا يوجد لدى تطبيق PRANTBACK الإرسال". أفهم سبب هذا الخطأ لأنه أثناء تقديمه: commandlink ، فإنه يحاول تقييم #{applicking.submit} إلى خاصية. بدلاً من ذلك ، أريد أن يتم تمرير المعلومات حول الطريقة التي يتم استدعاؤها (applicking.submit) إلى القالب وتقييمها أثناء تقديم H: commandlink.

أي اقتراحات؟

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

المحلول

إنشاء مكون مركب في حين أن (البرنامج التعليمي هنا) ، فإنه يمكّنك من تعريف تصرفات الفول على أنها attribtues.

هذا مثال على الانطلاق:

/resources/components/commandLink.xhtml

<ui:component
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:cc="http://java.sun.com/jsf/composite">
    <cc:interface>
        <cc:attribute name="id" required="true" />
        <cc:attribute name="label" required="true" />
        <cc:attribute name="action" method-signature="java.lang.String action()" required="true" />
    </cc:interface>
    <cc:implementation>
        <span class="btn-left btn-corners">&#160;</span>
        <span type="submit" class="submit">
            <h:commandLink id="#{cc.attrs.id}" value="#{cc.attrs.label}" action="#{cc.attrs.action}" />
        </span>
        <span class="btn-right btn-corners">&#160;</span>
    </cc:implementation>
</ui:component>

/somepage.xhtml

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:my="http://java.sun.com/jsf/composite/components">
    <h:head>
        <title>SO question 4608030</title>
    </h:head>
    <h:body>
        <h:form>
            <my:commandLink id="continue" label="continue" action="#{applyBacking.submit}"/>
        </h:form>
    </h:body>
</html>

بالمناسبة ، أفضل شخصياً استخدام JS/JQuery لجزء الزوايا المستديرة ، على سبيل المثال jQuery Corner Plugin. فقط أعط ارتباطك الخاص styleClass ودع JS تفعل السحر.

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