Merhaba,

Kayıt, güncelleme gibi işlemlerde dialogbox ile onay almak istiyorum. Her sayfada dialog kodlarını tekrar yazmak yerine custom tag kullanmak istiyorum. Her konuyu hallettim ancak actionListener'i çalıştırma konusunda sıkıntı yaşıyorum.

*.xhtml

<s:saveButton saveButtonId="sbAddGroup" saveButtonListener="#{spGroupPrst.update}"
saveButtonProcess=":frmSpGroup:pnlSpGroup" saveButtonUpdate=":frmSpGroup:pnlSpGroup"/>

savebutton.xhtml <ui:composition xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:of="http://omnifaces.org/functions">

<p:commandButton id="#{of:concat('cb', saveButtonId)}" value="#{lang['save']}" process="@this" icon="ui-icon-disk"
    onclick="#{p:widgetVar(saveButtonId)}.show()" type="button" >
    <f:attribute name="sbi" value="#{saveButtonId}" />
    <f:attribute name="sbl" value="#{saveButtonListener}" />
    <f:attribute name="sbp" value="#{saveButtonProcess}" />
    <f:attribute name="sbu" value="#{saveButtonUpdate}" />
</p:commandButton>

<p:confirmDialog message="#{lang['saveApprove']}" dynamic="true"
    header="#{lang['approve']}" severity="warn" fixedCenter="true"
    draggable="false" id="#{saveButtonId}">
    <p:messages id="messssages" showDetail="true" autoUpdate="true" closable="true" />

    <p:commandButton id="#{of:concat('yb', saveButtonId)}" value="#{lang['yes']}" icon="ui-icon-yes"
        process="@this" update="#{saveButtonUpdate}" actionListener="#{saveButtonListener}"
        oncomplete="#{p:widgetVar(saveButtonId)}.hide();"
         />
    <p:commandButton id="#{of:concat('nb', saveButtonId)}" value="#{lang['no']}" icon="ui-icon-cancel"
        onclick="#{p:widgetVar(saveButtonId)}.hide();" type="button" />
</p:confirmDialog>
</ui:composition>

Şöyle bir Hata Alıyorum:

actionListener="#{saveButtonListener}": /faces/production/semiproduct/definition/group/spgroup.xhtml @33,94 saveButtonListener="#{spGroupPrst.update}": Property 'update' not found on type com.sarparda.erp.module.production.semiproduct.definition.presentation.SpGroupPresentation

<f:setpropertyactionlistener> kullanmak istedim orada da problem yaşadım.

Tecrueli arkadaşlardan tavsiye rica ediyorum.

soruldu: 31 May '13, 06:17

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

değiştirildi: 07 Ağu '13, 09:29

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Merhaba,

öncelikle Composite Componentinizin

<composite:interface>   ...   </composite:interface>

tag ları arasına

<composite:attribute name="buttonAction" method-signature="java.lang.String action()" />

şeklinde bir actin parametresi tanımlamanız gerekiyor. Sonra örneğin bir butonun yada link in arkasında

<p:commandLink id="#{cc.attrs.id}Btn"
    value="..." actionListener="#{cc.attrs.buttonAction}"
    oncomplete="#{cc.attrs.id}OvrPanel.show()"
</p:commandLink>

şeklinde kullanabilirsiniz.

permanent link

cevaplandı: 31 May '13, 06:42

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

Merhaba, Composite Componentleri hiç kullanmamıştım. Custom Taglar içerisinde kullanabiliyormuyum veya ikisi aynı işi yapan farklı çözümlermi?

Ben kendi taglerimi oluşturuyorum dolayısı ile "xmlns:s="http://sarparda.com/jsf/facelets" tanımını yapmam gerekiyor. Ama Composite Componentler için ise componentin olduğu klasörün tanımlamam gerekiyormuş. Bu sorunu nasıl çözebilirim.

Son olarak JSF içerisinde bu tür çözümler için Custom Tag oluşturmak iyi bir çözümmüdür?

Teşekkür ederim.

(31 May '13, 07:29) SaRPaRDa SaRPaRDa's gravatar image

eğer jsf2 kullanıyorsanız bence Custom tag yerine Composite Component ler kullanın. Oldukça esnek ve kolay kullanılan ir yapısı var. Ben onu tercih ediyorum.

CustomTag lar içinde de bence Java kısmına bu parametreyi aldığınızda şu şekilde kullanabilirsiniz ;

MethodExpression mtd = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(), "#{" + buttonAction + "}", Object[].class, new Class[] {});
Object[] param = (Object[]) mtd.invoke(facesContext.getELContext(), null);
(31 May '13, 07:57) mceliksoy ♦ mceliksoy's gravatar image

Sizden cevap beklerken Composite Componentlere baktım ve onunla tekrar güncelliyorum taglarimi. Çözemezsem yine danışırım.

İlginiz için teşekkür ederim.

(31 May '13, 08:28) SaRPaRDa SaRPaRDa's gravatar image

Tamamdır, Composite Componentler ile çok kolaymış. Tekrar teşekkür ederim.

(31 May '13, 09:24) SaRPaRDa SaRPaRDa's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×281

Soruldu: 31 May '13, 06:17

Görüntüleme: 668 kez

Son güncelleme: 07 Ağu '13, 09:29

powered by BitNami OSQA