Merhaba arkadaşar,

Casse'im şöyle; sol tarafta 5-6 tane butonum var. Ve her buton database'den veri çekip data-table içinde gösteriyor. Bir tuşa bastığımda o tuşun tetiklediği data-table'ın görünür diğerlerinin gizli olmasını istiyorum. Yani ne zaman tuşa bassam bir tane data-table aktif olmalı diğerleri gizli olmalı. Bunu primefaces'da nasıl yapabilirim? Primefaces 5.2, JSF 2.1 kullaniyorum.

alt text

soruldu: 24 Kas '15, 08:16

sin's gravatar image

sin
700162536
cevap kabul oranı: 13%

değiştirildi: 24 Kas '15, 08:17


Merhaba,

2 yöntem söyleyebilirim.

1- Datatable'ın rendered özelliğini kullanarak yapabilirsin. xhtml içerisinde 3 tane datatable oluşturursun. Bean içerisinde tanımladığın bir değişkeni kontrol ederek datatable'ın render edilmesine karar verirsin.

<p:datatable .......   rendered= "#{bean.renderTable eq '1'}" update="@(form)"

2- xhtml içerisinde oluşturduğun tek tablonun Id'si üzerinden datatable'ı bean içerisinden create edebilirsin.

permanent link

cevaplandı: 24 Kas '15, 08:35

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

ilk yöntem daha iyi gibi geldi. dataTable için xhtml'den ayrılmayalım. ikinci yöntem daha dinamik gibi ama o column'ları felan bean içinde oluşturmak zor olsa gerek. teşekkürler birinci yöntemden devam ederim.

(24 Kas '15, 08:57) sin sin's gravatar image

Merhaba,

Öncellikle kullanmış olduğun Bean içerisinde bir tane Short turunde degisken tanımla. Her butona bastığında bu değişkene değer gönder. Örneğin 1,2,3,4,5 gibi sonra da Datatable 1 rendered özelliğinde ise

rendered="#{bean.degisken == 1}"

eşitle bu şekilde çözebilirsin. Tabi her butona tıkladığında datatable i update etmelisin. Aksi takdirde yapmış olduğun değişikler yansımayacaktır.

Buradaki örnek işini görecektir.

permanent link

cevaplandı: 24 Kas '15, 08:44

kurtomerfaruk's gravatar image

kurtomerfaruk
1.3k222940
cevap kabul oranı: 29%

değiştirildi: 24 Kas '15, 08:55

anladığım kadarı ile yukarıdaki arkadaşın ilk yöntemi ile aynı öneriniz. bu yöntemi denicem bende teşekkürler.

(24 Kas '15, 08:58) sin sin's gravatar image

Merhaba arkadaşlar,

Dediğiniz gibi yaptım oldu. Ancak Scope(value = "singleton") iken çalışıyor. Eğer Scope("prototype") ise çalışmıyor bunun nedeni nedir? Kodumun bir örneği aşağıdaki gibi;

Not: Kodda yazım hatası olabilir. Kendi kodumu paylaşamadığım için el ile aynısını örnekledim.

index.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html">
<h:head></h:head>
<p:layout fullPage="true">

    <!-- Status Waiting Dialog -->
    <p:ajaxStatus onstart="PF('statusDialog').show()"
        onsuccess="PF('statusDialog').hide()" />

    <p:dialog widgetVar="statusDialog" modal="true" draggable="false"
        closable="false" resizable="false" showHeader="true"
        header="Bilgiler getiriliyor. Bu işlem biraz zaman alabilir. Lütfen bekleyiniz...">
        <p:graphicImage value="/images/loader.gif"
            style=" float: left;position: relative;left: 30%;" />
    </p:dialog>

    <!--        Sol Layout -->
    <p:layoutUnit position="west" id="west">

        <p:growl autoUpdate="true" id="infoMessage" showDetail="true"
            showSummary="true" sticky="false" />

        <p:commandButton value="Kullannıcıları Getir"
            actionListener="#{indexBean.getAllUser}"
            update="infoMessage,centerForm,centerForm:userTable" />

        <p:commandButton value="Mesajları Getir"
            actionListener="#{indexBean.getAllMessages}"
            update="infoMessage,centerForm,centerForm:messageRaporTable" />

    </p:layoutUnit>

    <!-- Orta Layout -->
    <p:layoutUnit position="center" id="center">

        <h:form id="centerForm">

            <!-- User dataTable -->
            <p:dataTable id="userTable" var="user"
                value="#{indexBean.userList }" paginator="true" rows="10"
                lazy="true" rendered="#{indexBean.dataTableRendered ==1}"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                rowsPerPageTemplate="5,10,15,20,25,50,100">
                <p:column headerText="userid" sortBy="#{user.userId}"
                    filterBy="#{user.userId}">
                    <h:outputText value="#{user.userId}"></h:outputText>
                </p:column>
                <p:column headerText="username" sortBy="#{user.userName}"
                    filterBy="#{user.userName}">
                    <h:outputText value="#{user.userName}"></h:outputText>
                </p:column>
                <p:column headerText="firstname" sortBy="#{user.userFirstName}"
                    filterBy="#{user.userFirstName}">
                    <h:outputText value="#{user.userFirstName}"></h:outputText>
                </p:column>
            </p:dataTable>

            <!-- Mesaj dataTable -->
            <p:dataTable id="messageTable" value="#{indexBean.messageList}"
                var="message" resizableColumns="true" rows="20" paginator="true"
                draggableColumns="true" lazy="true" styleClass="messageStyle"
                rendered="#{indexBean.dataTableRendered == 2}"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                rowsPerPageTemplate="5,10,15,20, 25, 50, 100">

                <p:column headerText="Message Id" 
                    filterBy="#{message.messageId}"
                    sortBy="#{message.messageId}">
                    <h:outputText value="#{message.messageId}" />
                </p:column>
                <p:column headerText="Gonderen Kisi" 
                    sortBy="#{message.messageSender}" filterBy="#{message.messageSender}">
                    <h:outputText value="#{message.messageSender}" />
                </p:column>
                <p:column headerText="Alan Kisi" 
                    sortBy="#{message.messageReceiver}"
                    filterBy="#{message.messageReceiver}">
                    <h:outputText value="#{message.messageReceiver}" />
                </p:column>
                <p:column headerText="Mesaj Konusu"
                    sortBy="#{message.messageSubject}"
                    filterBy="#{message.messageSubject}">
                    <h:outputText value="#{message.messageSubject}" />
                </p:column>
                <p:column headerText="Mesaj"
                    sortBy="#{message.messageText}"
                    filterBy="#{message.messageText}">
                    <h:outputText value="#{message.messageText}" />
                </p:column>

            </p:dataTable>

        </h:form>

    </p:layoutUnit>

</p:layout>
</ui:composition>

IndexBean.java

@Name("indexBean")
@Scope(value = "prototype")
public class IndexBean implements Serializable {

private static final long serialVersionUID = 1L;

@Inject
UserService userService;
private List<User> userList;

@Inject
MessageService messageService;
private List<Message> messageList;
private Integer dataTableRendered;

public void getAllUser() {
    setDataTableRendered(1);
    userList = new ArrayList<User>();
    userList = userService.getAllUser();
    if (userList.size() > 0) {
        addMessageSuccess("Başarılı", "Veriler tablolandı.");
    } else {
        addMessageError("Başarısız", "Veriler tablolanamadı!");
    }
}

public void getAllMessages() {
    setDataTableRendered(2);
    messageList = new ArrayList<Message>();
    messageList = messageService.getAllMessages();
    if (messageList.size() > 0) {
        addMessageSuccess("Başarılı", "Veriler tablolandı.");
    } else {
        addMessageError("Başarısız", "Veriler tablolanamadı!");
    }
}

public void addMessageSuccess(String summary, String detail) {
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
    FacesContext.getCurrentInstance().addMessage(null, message);
}

public void addMessageError(String summary, String detail) {
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail);
    FacesContext.getCurrentInstance().addMessage(null, message);
}

public List<User> getUserList() {
    return userList;
}
public void setUserList(List<User> userList) {
    this.userList = userList;
}
public List<Message> getMessageList() {
    return messageList;
}
public void setMessageList(List<Message> messageList) {
    this.messageList = messageList;
}
public Integer getDataTableRendered() {
    return dataTableRendered;
}
public void setDataTableRendered(Integer dataTableRendered) {
    this.dataTableRendered = dataTableRendered;
}
}
permanent link

cevaplandı: 03 Ara '15, 07:25

sin's gravatar image

sin
700162536
cevap kabul oranı: 13%

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:

×1,079
×281
×97
×41

Soruldu: 24 Kas '15, 08:16

Görüntüleme: 365 kez

Son güncelleme: 03 Ara '15, 07:25

powered by BitNami OSQA