我有一个联系表单,在提交后,将所有表单的数据发布到电子邮件操作中,然后以纯文本形式发送确认电子邮件。数据很好,但有些线路忽略了它们各自的换行符。
JSP:
<%@ page language="java" contentType="text/plain;" %><%@ page import="com.shared.Configuration" %><%@ taglib uri="/WEB-INF/jstl-core.tld" prefix="c" %>Contact Us Form: ${issue}
Name: ${name}
Email Address: ${emailAddress}
<c:if test="${not empty accessCode}">Access Code: ${accessCode}</c:if>
<c:if test="${not empty itemId}">Inventory Number: ${itemId}</c:if>
<c:if test="${not empty title}">Title: ${title}</c:if>
<c:if test="${not empty device_active}">User Device: ${device}</c:if>
<c:if test="${not empty os_active}">User Operating System/Version: ${operatingSystem}</c:if>
<c:if test="${not empty browser_active}">User Web Browser/Version: ${webBrowser}</c:if>
<c:if test="${hasError eq 'Y' or hasError eq 'N'}"><c:choose><c:when test="${hasError eq 'Y'}">Error Message: ${errorMessage}</c:when><c:otherwise>No Error message was present</c:otherwise></c:choose></c:if>
<c:if test="${not empty otherDetails}">Other Details: ${otherDetails}</c:if>
<c:if test="${not empty problemDetails}">Problem Details: ${problemDetails}</c:if>**
正如您所看到的,有很多IF条件,基本上,这些是作为节省空间的,如果用户没有输入这些字段中的任何信息,那么就不要放置它们在电子邮件中。
正如它所说的那样,Mac OS X Mail客户端可以很好地呈现电子邮件,就像所有基于Web的客户端一样。 Outlook是唯一一个表现不佳的人,并将其电子邮件呈现出来:
Outlook电子邮件结果:
Contact Us Form: Can't access the extra PlayBack+ features
Name: me
Email Address: jjozwowski@halleonard.com
Access Code: aqwsedrftgyhuj87
Inventory Number: 12345678
Title:Title: this track
User Device: Desktop
User Operating System/Version: Mac OS 10.9.5 User Web Browser/Version: Chrome 55 Error Message:
Other Details:no other details Problem Details:
用户操作系统,用户浏览器,错误消息和问题详细信息的换行符不到位。办公室里没有人有解决方案。那里的任何人都知道发生了什么?
答案 0 :(得分:0)
我会在三个地方搜索问题:
1)
这可能是JSP中新行的非可打印字符的问题。
<c:if ...></c:if>\r\n
<c:if ...></c:if>\n
<c:if ...></c:if>\r
新的线路代码在不同的操作系统上有所不同:
Windows系统:\r\n
Unix:\n
更多信息:wikipedia
查看编辑器中不可见的字符。例如,在Notepad ++中单击¶ 如果存在任何差异,请统一它。
2)
检查EL变量是否包含新行字符的值 这可能是由于解析错误或使用未正确清理/修剪的字符串造成的。
如何评估EL ${operatingSystem}
? Mac OS 10.9.5\r
有新行字符吗?
如是。在设置变量之前修剪字符串。
3)
结合前两种可能性,trimDirectiveWhitespaces也可能会发生干扰。
检查部署描述符web.xml是否包含类似于以下的块:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
如果trimDirectiveWhitespaces设置为true,这在许多情况下都有意义,您可以通过向JSP添加以下行来停用此特定情况:
<%@ page trimDirectiveWhitespaces="false"%>
在这里看一些例子: Remove Spacing between JSP variables