有效地使用 JSP 标签获取 java 代码中的空值

Using JSP tags efficiently for null value from java code

<% Object domName = request.getAttribute("domainName");
   String documentationLink = UMRACM.getDomainDocumentationMap().get(domName);
%>

<td><a href="<%=documentationLink%>"target="_blank"
 id="domainName_<s:property value="#rowstatus.index"/>"><s:property value="domainName" /></a></td>

好吧,我已经使用此 syntaxhref 打印为 documentationLink,但我认为这不是一种有效的方法这样做,因此需要 在使用`代码时提供一些帮助。

有没有更好的方法来处理代码的逻辑部分。

如果我得到

documentationLink = null

如何让标签不可点击

使用 CSS

使标签 不可点击 的一种方法

Html

<a href="link.html" class="not-active">Link</a>

CSS

.not-active {
   pointer-events: none;
   cursor: default;
}

如果您的 documentationLink 为空,那么您需要在分配给 href 之前对其进行测试。

示例代码

 <% if(documentationLink != null){%>
    <a href="<%=documentationLink%>"target="_blank"
     id="domainName_<s:property value="#rowstatus.index"/>"><s:property value="domainName" /></a>
    <%}else{%>
    <a href="<%=documentationLink%>" style="opacity: .5;
pointer-events: none;">"target="_blank"
     id="domainName_<s:property value="#rowstatus.index"/>"><s:property value="domainName" /></a>
    <%}%>

你可以试试这个。

<% Object domName = request.getAttribute("domainName");
   String documentationLink = UMRACM.getDomainDocumentationMap().get(domName);
%>

对您的服务器端执行此操作 ^^^。 并将检索到的 documentationLink 放入 sessionrequest 范围。像这样:

   Object domName = request.getAttribute("domainName");
   String documentationLink = UMRACM.getDomainDocumentationMap().get(domName);
   request.setAttribute("documentationLink",documentationLink);

正如我所见,您正在使用 Struts-tags。因此,删除您的 scriptlet 并尝试使用 Struts2 中使用的标签。像这样,

<td>
<s:if test="%{#request.documentationLink != null}">
<a href="<s:property value="#request.documentationLink"/>"target="_blank"
 id="domainName_<s:property value="#rowstatus.index"/>"><s:property value="domainName" />
</a>
</s:if>
<s:else>
<s:property value="domainName" />
</s:else>
</td>