==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.
是==坏?什么时候应该不应该使用它?有什么不同?
我正在创建所有语言的下拉列表.列表的默认语言选择将由用户添加的信息确定:
<select>
<c:forEach items="${languages}" var="lang">
<c:choose>
<c:when test="${lang}.equals(${pageLang})">
<option value="${lang}" selected>${lang}</option>
</c:when>
<c:otherwise>
<option value="${lang}">${lang}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
Run Code Online (Sandbox Code Playgroud)
.equals在EL中似乎不存在.看了一下这里建议我编写自己的函数,然后导入并使用它.因为这只是针对此页面的一个小小的事情,我不想为此开始创建库等.我也不想开始为servlet创建专家对象,并在其中返回这些额外信息.
我唯一能想到的就是从servlet返回整个选项行的实际html,而不仅仅是语言字符串,但这让我觉得很难看,所以我希望有一个更优雅的解决方案.
快速修复EL中两个字符串的最佳方案是什么?
我目前正在尝试使用 ejs 为导航栏开发部分模板文件,但是我正在努力向已添加类的元素添加其他类。
我尝试了两种添加附加类的方法,这是第一种:
<li class='navbar-item'<% if (pageTitle === 'Home') { %> class="active" <% } %>> <a href="/home">Home</a></li>
Run Code Online (Sandbox Code Playgroud)
然而这不起作用,所以我决定尝试将 EJS 嵌入到类属性中,如下所示
<li class="nav-item <% if (pageTitle === 'Home') { %> active <% } %>">
Run Code Online (Sandbox Code Playgroud)
这也不起作用,我确保 pageTitle 被正确提供,因为它在网页中的其他地方使用并且工作正常。
我不确定下一阶段是什么,我考虑过使用额外的 JS 文件,但这似乎适得其反,因为我已经能够将 JS 嵌入到 HTML 中。
感谢任何帮助,提前致谢。