2010-08-10 2 views
0

Я пытаюсь создать несколько полей выбора с зависимостями от других полей выбора. Я довольно новичок в Seam - просто чтобы добавить это. Вот мой JSF - для тестовых целей я пытаюсь для отображения DataTableSeam - ListSelectMenus с зависимостями

<f:facet name="header">Profil</f:facet> 

<a:form ajaxSubmit="true" reRender="testTable"> 
    <s:decorate id="techTypeField" template="layout/edit.xhtml"> 
     <ui:define name="label">Choose tech</ui:define> 
      <h:selectOneRadio id="techType" value="#{technologyType}" onchange="submit()"> 
       <s:selectItems value="#{technologyTypes}" var="elem" label="#{elem.name}" id="typeId"/> 
       <s:convertEntity/> 
      </h:selectOneRadio> 
    </s:decorate> 
</a:form> 

<div style="clear:both"/> 

<h:dataTable var="productLine" id="testTable" value="#{productLines}" rendered="#{productLines.rowCount > 0}"> 
    <h:column > 
     <f:facet name="header">pl</f:facet> 
     #{productLine.id} 
    </h:column> 
</h:dataTable> 

Моя бэк-компонентов-

package de.ac.dmg.productfinder.workflow; 

import java.util.List; 

import javax.ejb.Remove; 
import javax.ejb.Stateful; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

import org.jboss.seam.annotations.Factory; 
import org.jboss.seam.annotations.In; 
import org.jboss.seam.annotations.Logger; 
import org.jboss.seam.annotations.Name; 
import org.jboss.seam.annotations.datamodel.DataModel; 
import org.jboss.seam.annotations.datamodel.DataModelSelection; 
import org.jboss.seam.international.StatusMessages; 
import org.jboss.seam.log.Log; 

import de.ac.entity.Machine; 
import de.ac.entity.ProductLine; 
import de.ac.entity.TechnologyType; 

@Stateful 
@Name("Profil") 

public class ProfilBean implements IProfil { 
@PersistenceContext 
private EntityManager entityManager; 

@Logger 
private Log log; 

@DataModel(value = "technologyTypes") 
private List<TechnologyType> technologyTypes; 

@DataModelSelection(value = "technologyTypes") 
private TechnologyType technologyType; 

@DataModel(value = "productLines") 
private List<ProductLine> productLines; 

@DataModel(value = "machines") 
List<Machine> machines; 

@In 
StatusMessages statusMessages; 

// add additional action methods 

@Factory("technologyTypes") 
public void loadTechTypes() { 
    technologyTypes = entityManager.createQuery("Select t from TechnologyType t").getResultList(); 
} 

@Factory("productLines") 
public void loadProductLinies() { 
    System.out.println(technologyType); 
    productLines = entityManager.createQuery("select p from ProductLine p where p.technologyType = :type ") 
      .setParameter("type", technologyType).getResultList(); 
} 

public void next() { 
    // implement your business logic here 
    log.info("Profil.next() action called with: #{Profil.value}"); 
    statusMessages.add("next #{Profil.value}"); 
} 

@Remove 
public void destroy() { 
} 

} 

Я могу установить тип технологий на время - после того, как один нажмите он не обновляется к сожалению. Что я здесь делаю неправильно?

ответ

1

При выборе типа «технологии» вам необходимо выполнить действие, которое перезагружает типы продуктов на основе выбранного технолога. Что-то вроде action=#{Profil.loadProductLines()}

Смежные вопросы