2014-09-05 33 views
0

我對JSP非常陌生,本週剛開始上課。我遇到了一個需要完成學校任務的問題。在JSP中獲取對象參數名稱

<c:forEach var="tempGebruiker" items="${gebruikers}"> 
    <!-- Per gebruiker wordt nu een rij aangemaakt met daarin zijn gegevens --> 
    <tr> 
     <td> 
      ${tempGebruiker.name} 
     </td> 
     <td> 
      ${tempGebruiker.streetAddress} 
     </td> 
     <td> 
      ${tempGebruiker.huisnummer} 
     </td> 
     <td> 
      ${tempGebruiker.city} 
     </td> 
     <td> 
      ${tempGebruiker.rol} 
     </td> 
     <td> 
      <a href="gebruikers/wijzig?id=${tempGebruiker.customerNumber}">Wijzig</a> | 
      <a href="javascript:if(confirm('Weet u het zeker dat u deze gebruiker wil verwijderen?')) 
       window.location='gebruikers/verwijder?id=${tempGebruiker.customerNumber}';">Verwijder</a> 
     </td> 
    </tr> 
</c:forEach> 

在這一部分:

<td> 
    ${tempGebruiker.rol} 
</td> 

角色對象返回,而不是雖然我需要它來顯示該對象的名稱。如下:tempGebruiker.getRol().getName(); 我如何使用EL實現這一點?

編輯: 角色豆

public class Role implements Serializable { 

    private long id; 
    private String name; 

    public long getId() { 
     return id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public String toString() { 
     return this.name; 
    } 
} 

用戶豆

public class User implements Serializable { 

    private long customerNumber; 
    private String name; 
    private String streetAddress; 
    private String city; 
    private int huisnummer; 
    private Role rol; 

    public User() { 
    } 

    public User(long customerNumber, String naam, String straatnaam, int huisnummer, String stad, Role rol) { 
     this.setCustomerNumber(customerNumber); 
     this.setName(naam); 
     this.setStreetAddress(straatnaam); 
     this.setCity(stad); 
     this.setHuisnummer(huisnummer); 
     this.setRol(rol); 
    } 

    /* Getters en setters voor de verschillende attributen van het Model */ 
    public long getCustomerNumber() { 
     return customerNumber; 
    } 

    public Role getRol() { 
     return rol; 
    } 

    public void setRol(Role rol) { 
     this.rol = rol; 
    } 

    public int getHuisnummer() { 
     return huisnummer; 
    } 

    public void setHuisnummer(int huisnummer) { 
     this.huisnummer = huisnummer; 
    } 

    public void setCustomerNumber(long customerNumber) { 
     if (customerNumber < 1) { 
      throw new IllegalArgumentException(
        "Customer number may not be negative, value = " + customerNumber); 
     } 
     this.customerNumber = customerNumber; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     if (name == null) { 
      throw new NullPointerException("Customer name may not be empty"); 
     } 
     this.name = name; 
    } 

    public String getStreetAddress() { 
     return streetAddress; 
    } 

    public void setStreetAddress(String streetAddress) { 
     this.streetAddress = streetAddress; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 
} 
+0

你有沒有嘗試過:tempGebruiker.rol.name? – AndreDuarte 2014-09-05 12:16:04

+0

@Taerus,Rol是如何定義的?我的意思是它的結構 – Arvind 2014-09-05 12:26:32

+0

@spoko你的編輯無效。 JSP代表Java Server Pages,這與Javascript無關,並且刪除Java標記是不正確的。下次提交標籤修改時請小心。 – Unihedron 2014-09-05 12:38:34

回答

0
${tempGebruiker.rol.name} 

的吸氣劑getXxx()或(布爾值)isXxx將變成選擇器.xxx

您還可以使用方法:

${tempGebruikder.isInRole('Admin')} 

評論後:

你似乎已經嘗試了正確的事情,也許下面的比較我的 「解決方案」 的豆:

public class Gebruiker { 
    public Role getRol() { 
     return "actor"; 
    } 
} 
public class Role { 
    public String getName() { 
     return ""; 
    } 
} 

您可以試試:

<td>XXX <c:out value="${tempGebruiker.rol}" escapeXml="true"/> YYY</td> 
  • 標記XXX,YYY搜索它的HTML源文本。
  • c:用escapeXml轉換<和其他XML(HTML)字符。
  • 以「.rol」開頭,獲得toString()值。
+0

我試過$ {tempGebruiker.rol。名稱},但它似乎沒有工作。我確實包含了一個getter和setter,也是Role bean中的toString方法。 – Taerus 2014-09-05 12:20:56

+0

你可以發佈實體的詳細信息Rol – 2014-09-05 12:31:35

0

試試這個:

<td> 
${tempGebruiker.rol.name} 
</td> 
+0

我試過$ {tempGebruiker.rol.name},但它似乎沒有工作。我確實包含了一個getter和setter,也是Role bean中的toString方法。 – Taerus 2014-09-05 12:22:05