从数据库检索到 jsp 的数据中的新行
Posted
技术标签:
【中文标题】从数据库检索到 jsp 的数据中的新行【英文标题】:New line in data retrieved from database to jsp 【发布时间】:2021-09-17 21:41:08 【问题描述】:我正在尝试使用 JSP 创建网页,主页返回并显示从数据库到 JSP 文件的日期,并且有一个编辑按钮允许编辑消息并因此进行编辑数据库中的数据,我通过声明修改了显示主页的文本
String convert = rs.getString("template");
然后打印 convert
但是当我单击 edit 时,文本显示为来自数据库,尽管文本包含 br 标签;它显示没有新行。
这里是主页面的运行
这里是编辑页面的运行
我尝试更改获取数据的方式,如 img No. 3 所示,但它也对我不起作用
我的问题是在这种情况下如何插入新行?
代码按预期运行,只是这个显示问题。 这是 Edit.JSP 的代码
<%@ page language="java" contentType="text/html; charset=windows-1256"
pageEncoding="windows-1256" import="java.io.*" import="java.sql.*"
import="java.util.*" import="javax.sql.*"%>
<!DOCTYPE html>
<html>
<body>
<%
String url = "jdbc:sqlserver://DESKTOP-SQ7B6EQ;databaseName=JsonToSql";
String username = "";
String password = "";
Statement stmt = null;
ResultSet rs = null;
PreparedStatement ps = null;
Connection con = null;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
con = DriverManager.getConnection(url, username, password);
%>
<form method="post" action="">
<%
stmt = con.createStatement();
String u = request.getParameter("u");
int num = Integer.parseInt(u);
String data = "select * from DatabaseMsgs where id = '" + num + "' ";
rs = stmt.executeQuery(data);
while (rs.next())
%>
<h3 align="left"
style="Color: white; font-size: 18px; color: black; font-family: 'Exo 2', sans-serif;">
Welcome to edit page</h3>
<input class="container" type="hidden" name="id"
value="<%=rs.getString("id")%>">
<table border="0">
<tr align="left"
style="font-weight: bold; font-family: 'Festive', curesultive; text-transform: capitalize; font-size: 15px; color: #203bd6">
<td>code:</td>
<td><input type="text" name="code"
value='<%=rs.getString("code")%>' /></td>
</tr>
<%-- <%
String convert = rs.getString("template").replaceAll("EmployeeName:", "Employee Name:")
.replaceAll("Luc", "Lucation").replaceAll("TelephoneNo", "Telephone No.").replaceAll("E-mail", "E-mail:")
.replaceAll("Mobile", "Mobile No. : ").replaceAll("phoneExtension", "phone Extension No.:")
.replaceAll("[* \\ ----------------------- ]", " ").replaceAll("\\[", "").replaceAll("\\]", "");
%> --%>
<tr align="left">
<td
style="font-weight: bold; font-family: 'Festive', curesultive; text-transform: capitalize; font-size: 15px; color: #203bd6">template:</td>
<td><input type="text" style="width: 100ch; height: 30ch;"
name="template" value='<%=rs.getString("template")%>' /></td>
</tr>
<tr align="left" valign="top">
<td></td>
<%
%>
<td><button type="submit" class="btn btn-warning" >Edit</button></td>
</tr>
</table>
</form>
</body>
</html>
<%
String a = request.getParameter("id");
String b = request.getParameter("code");
String c = request.getParameter("template");
if (a != null && b != null && c != null)
String query = "update DatabaseMsgs set code = ? , template=? where id = '" + a + "' ";
ps = con.prepareStatement(query);
ps.setString(1, b);
ps.setString(2, c);
ps.executeUpdate();
response.sendRedirect("Home.jsp");
%>
`
【问题讨论】:
您可以检查未在新行上显示的元素并在您的问题上分享图像吗? 您可以尝试使用\n
而不是<br>
,因为目前尚不清楚您要在哪里添加新行。
@skr 我尝试使用 \n 而不是 br 标签,但它不起作用。正如您在附加的 img No.1 中看到的那样,这些是我希望我的文本采用的格式。员工姓名: 手机号码:
@skr 我也尝试使用 `rs.getString("template").replaceAll("" , "\n")`,但它也不起作用:(跨度>
如果我理解清楚,您希望编辑页面模板字段中带有<br>
的字符串以新行显示?
【参考方案1】:
HTML 输入元素、输入文本或类似的东西(例如电子邮件)会故意去掉所有换行符,所以这是行不通的。
唯一可以接受换行符的表单元素是文本区域。
另外,不要使用<br>
或'\n'
在要添加新行的地方使用&#13;&#10;
所以,不要使用 ,
<input type="text" name="test" value='<%=convert %>'/>
使用
<textarea cols='60' rows='8' va> <%=convert %> </textarea>
例如:
<textarea cols='30' rows='2' va>This is my statement one.&#13;&#10;This is my statement2</textarea>
将导致
您可以通过调整cols
和rows
来调整textarea的高度和宽度。
为了让它看起来更像一个输入字段,
试试这个,
function auto_height(elem)
elem.style.height = "1px";
elem.style.height = (elem.scrollHeight)+"px";
.auto_height /* CSS */
width: 100%;
<textarea rows="2" class="auto_height" oninput="auto_height(this)">line1&#13;&#10line2</textarea>
【讨论】:
是的,现在可以使用了……非常感谢 太好了,请点赞并接受我的回答。以上是关于从数据库检索到 jsp 的数据中的新行的主要内容,如果未能解决你的问题,请参考以下文章
如何在选择jsp中的select标记中的选项时从数据库中检索数据
如何从 html 表中检索数据并将其发送到另一个 jsp 页面?