【问题标题】:Dont show empty line when EL is emptyEL为空时不显示空行
【发布时间】:2014-08-26 16:24:24
【问题描述】:

在一个 jsp 页面中,我有一个文本区域,用户可以在其中输入三行地址,每一行都保存在树中不同的变量(数据库限制)中。当我将用户的值保存到我的 DTO 时,一切正常,但是当我在编辑表单中显示它们时,我在不需要它们的地方出现空行

jsp代码:

   <textarea id="address-lines" name="address-lines" rows="3">
${address.line1}
${address.line2}
${address.line3}
    </textarea>

如果只有 address.line1 有我得到的值:

---
line 1 value


---

我只想要一个

---
line 1 value
---

jstl 可以吗?我应该创建自己的标签吗?

【问题讨论】:

    标签: jsp jstl el


    【解决方案1】:

    这是一个文本区域,它呈现换行符。

    在Java层构造值,在文本区域只使用一个值,例如,

    Java 伪代码

    fullAddress = Strings.join("\n", address.line1, address.line2, address.line3);
    

    JSP

    <textarea id="address-lines" name="address-lines" rows="3">${fullAddress}</textarea>
    

    【讨论】:

    • 我对给 jsp 的类没有太多控制权,而且地址类大部分时间都包含在一个列表中,所以我不能只从 jsp 控制器添加一个新属性,但我同意这可能是最好的
    • @JonatanCloutier 您仍然可以以相同的方式创建一个新变量并将其公开给页面。
    • 好吧,我在地址类(城市、国家/地区)上使用了许多其他成员,我需要在另一个列表中重建整个数据。我想我会为此使用自定义标签或 ELfunction。感谢您的帮助
    【解决方案2】:

    我喜欢 Dave 的回答,但如果您无法控制 Java 源代码,则可以使用 JSTL 和换行符的 html 实体来完成这一切。

    <c:if test="${not empty address.line1}">${address.line1}&#10;</c:if><c:if test="${not empty address.line2}">${address.line2}&#10;</c:if><c:if test="${not empty address.line3}">${address.line3}&#10;</c:if>
    

    【讨论】:

    • 谢谢,在这种情况下我没有考虑 html 实体。我会看看,但它应该适用于我的情况。我同意你的观点,大多数情况下戴夫的方式更好。
    猜你喜欢
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多