2016-04-13 17 views
1

Jsp'mde birden fazla seçim kutusu var - bir kullanıcı ilk seçim kutusunu seçtiğinde veritabanını sorgulamak için Action sınıfım aracılığıyla veritabanını sorgulamam gerekir ikinci seçim kutusu (ve benzeri).Struts 2 - Populasyon s: sunucudan ilk seçime göre seçim yapın: select

İlk seçme kutusunun değerlerini doğru olarak görüntüleyebilir ve seçebilirim, ancak db'yi ilke temel alınarak ikinci değerler için sorgulamanın bir yolunu belirleyemiyorum. İşte ilk seçim için çalışan kod. Birinciye göre seçilen ikinci seçimi elde etmek için iyi bir yaklaşım önerileri büyük ölçüde takdir edilecektir.

JSP

<s:form action="fileUploadAction" method="post" enctype="multipart/form-data"> 
    <s:div> 
     <s:select label="Select #1:" list="select1Map" listKey="key" 
       listValue="value" name="select1" headerKey="-1" 
      headerValue="--Select a Value--"/> 
    </s:div> 
    <s:div> 
     <s:select label="Select #2:" list="select2Map" listKey="key" 
       listValue="value" name="select2" headerKey="-1" 
      headerValue="--Select an Value--"/> 
    </s:div> 

</s:form> 

struts.xml

<action name="fileUpload" class="fileUploadAction" method="display"> 
    <result name="success">/jsp/dataUpload/fileUpload.jsp</result> 
</action> 

FileUploadAction.java

public class FileUploadAction extends AbstractAction{ 
private Map<Object, String> select1Map; 
private Map<Object, String> select2Map; 

private FileUploadService service = null; 

public FileUploadAction(){ 
    super(); 
} 

public String display(){ 
    select1Map= service.getDataForDropDown(getUser().getId()); 
    select2Map = new HashMap<Object,String>(); 

    return SUCCESS; 
    } 
} 

cevap

1

Sadece pr beyan Seçilen değerlere karşılık gelen zellikler, ilk boş/boş değilse, kontrol, bu durumda çok ikinci ilk yük:

public class FileUploadAction extends AbstractAction{ 

    @Inject FileUploadService service; 

    @Getter   private Map<Object, String> select1Map; 
    @Getter   private Map<Object, String> select2Map; 

    @Getter @Setter private String select1; 
    @Getter @Setter private String select2; 

    public String display() { 
     select1Map= service.getDataForDropDown(getUser().getId()); 
     if (select1!=null) { 
      select2Map = service.getDataForDropDown2(select1); 
     } 
     return SUCCESS; 
    }  
} 

Not: @Getter ve @SetterLombok annotations vardır; Bu harika ve asla geri dönmeyeceğim, ama burada sadece anlamına gelir "bir getter ve bir setter koymak". Böyle bir şey yapmaya çalışıyoruz gibi

+1

Bu haddeleme ..., Lombok rulez. –

+1

@RomanC Evet, bir adı veya türü her değiştirdiğinizde, alıcıları ve ayarlayıcıları silmeye ve yeniden oluşturmaya gerek yoktur. Ve sınıfta '@ Data' ile hepsini bir kerede (bazen yararlı) elde edersiniz ... –

+0

, yöntemlerini adlandırarak Eclipse veya benzeri Struts gibi çalışıyor mu? –

0

Sesler: Bu eğitimde http://tech.learnerandtutor.com/dynamic-drop-down-list-with-struts-2-and-ajax/

, yazar ilk seçme kutusuna bir onChange() olay eklemek için jQuery kullanır. Kullanıcı ilk kutunun değerini değiştirdiğinde, jQuery seçilen geçerli değerle ilişkili verileri döndürmek için eylem sınıfındaki bir yönteme bir Ajax isteği oluşturur.

+1

Ayrıca jQuery (http: //stackoverflow.com/a/25994676/1654265 –

İlgili konular