2017-05-16 2 views
0

Ich habe Probleme beim Zugriff auf ein bestimmtes Objektattribut einer Liste von Objekten, wenn der Attributname eine Variable ist.Zugriff auf Objektattribut, wenn Objektname in Struts2 variabel ist

Dies ist ein Beispiel, in dem Benutzer eine Liste von Benutzer und userAttributeList ist eine Liste von String, die den Namen des Benutzerattributs enthält.

<% 
    ....... 
    ActionContext.getContext().put("userAttributeList", request.getAttribute("userAttributeList")); 


%> 

<s:iterator value="users"> 
    <s:iterator value="%{userAttributeList}" var="userAttribute"> 
    ... <s:property value="%{#userAttribute}" /> 
    </s:iterator> 
</s:iterator> 

In diesem Fall kehrt das Eigenschaftstag nicht Wert des Attributs wie John, 20-05-1990 und so weiter, aber den Namen des Attributs wie Benutzername, birth und so weiter zurück.

public class UserAction extends ActionSupport { 

     @Override 
     public String execute() 
       throws Exception { 
      HttpServletRequest request = ServletActionContext.getRequest(); 

        ArrayList userAttributeList= new ArrayList(); 

        // some logic implementation and populate the `userAttributeList`(username, birthDate, password etc) 

        request.setAttribute(userAttributeList, userAttributeList); 


        return SUCCESS; 

     } 
} 

Die userAttributeList Arraylist enthalten den Namen des Attributs eines Nutzers. Diese Arraylist wird verwendet, um die Implementierung zu vereinfachen und eine dynamicaly Lösung für diese erstellen:

<s:iterator value="users"> 
     <s:property value="%{username}" /> 
     <s:property value="%{birthDate}" /> 
     <s:property value="%{password}" /> 
     .... 
    </s:iterator> 
+0

Beitrag einen Code, wo Sie füllen 'userAttributeList' –

+0

@Roman C I edited meine Post – Ariana

Antwort

1

Sie nur Namen von Attributen des Benutzerobjekts bevölkert haben. Aber hat keine Werte gesetzt. Anstelle von ArrayList sollten Sie eine Map verwenden, wenn Sie dynamische Felder des Benutzerobjekts haben möchten.

Map<String, Object> userAttributeMap= new HashMap<>(); 
userAttributeMap.put("username", "John"); 
userAttributeMap.put("birthDate", "20-05-1990"); 
.... 

nun in der JSP sollten Sie Mapkeys auswerten OGNL mit

<s:iterator value="%{userAttributeMap}" var="userAttribute"> 
... <s:property value="%{#userAttribute['username']}" /> 
    <s:property value="%{#userAttribute['birthDate']}" /> 
</s:iterator> 
Verwandte Themen