在JSP中获取对象参数的名称

时间:2014-09-05 12:13:52

标签: java jsp el

我对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实现这一目标?

编辑: 角色bean

    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;
    }
}

用户bean

    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;
    }
}

2 个答案:

答案 0 :(得分:0)

${tempGebruiker.rol.name}

getter getXxx()或(boolean)isXxx将变为选择器.xxx

您也可以使用方法:

${tempGebruikder.isInRole('Admin')}

评论后:

您似乎尝试过正确的事情,也许比较我的解决方案&#34;下面关于豆子:

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>
  • Markers XXX,YYY在HTML源文本中搜索它。
  • c:out with escapeXml翻译<和其他XML(HTML)字符。
  • 以&#34; .rol&#34;开头获得toString()值。

答案 1 :(得分:0)

试试这个:

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