Używam znaczników "pre", aby umożliwić polu tekstowemu przechodzenie przez nowe linie, ponieważ usuwam html z formularza podczas jego podpisywania. Problem polega na dodaniu "pre"...moja komórka tabeli rozwija się do ogromnych rozmiarów i nie wiem dlaczego.....
Z góry dziękuję
Przed tagowaniem wstępnym:
Po tagu wstępnym:
Oto kod dla tej tabeli:
<form id="commentForm" name="commentForm" action="" method="post">
<ctl:vertScroll height="300" headerStyleClass="data_table_scroll" bodyStyleClass="data_table_scroll" enabled="${user.scrollTables}">
<ctl:sortableTblHdrSetup topTotal="false" href="show.whatif_edit_entry?entryId=${entry.entryId}"/>
<table class="data_table vert_scroll_table" style="width:360px;">
<tr>
<ctl:sortableTblHdr styleClass="center" title="Comments" property="comment" type="top">Comments</ctl:sortableTblHdr>
<ctl:sortableTblHdr styleClass="center" title="Created By" property="auditable.createdBy.lastName" type="top">Entered By</ctl:sortableTblHdr>
</tr>
<c:forEach var="comments" items="${entry.comments}">
//PRE HERE!! ----->>> <tr id="id${comments.id}">
<td id="comments-${comments.id}" style="width:360px;"><pre>${comments.comment}</pre></td>
<c:choose>
<c:when test="${comments.auditable != null}">
<td title="${comments.auditable.createdBy.lastName}, ${comments.auditable.createdBy.firstName} on
<fmt:formatDate value="${comments.auditable.createdDate}" pattern="${date_time_pattern}" />"><span class="mouseover_text">${comments.auditable.createdBy.lastName}, ${comments.auditable.createdBy.firstName} on
<fmt:formatDate value="${comments.auditable.createdDate}" pattern="${date_time_pattern}" />
</td>
</c:when>
<c:otherwise>
<td colspan="1"> </td>
</c:otherwise>
</c:choose>
</tr>
</c:forEach>
<c:if test="${lock.locked || form.entryId < 0 }">
<%-- This is the row for adding a new comment. --%>
<tr id="commentRow">
<td>
You have <strong><span id="commentsCounter">${const['COMMENT_MAX_LENGTH'] - fn:length(commentForm.comment)}</span></strong> characters left.<br/>
<textarea id="comment" name="comment" rows="2" cols="125" style="width:320px;"
onkeypress="characterCounter('commentsCounter',${const['COMMENT_MAX_LENGTH']}, this)"
onkeydown="characterCounter('commentsCounter',${const['COMMENT_MAX_LENGTH']}, this)"
onkeyup="characterCounter('commentsCounter',${const['COMMENT_MAX_LENGTH']}, this)"></textarea>
<a href="javascript:addComment();"><img src="../images/icon_add.gif" border="0" alt="Add"/></a>
</td>
<td class="shaded" colspan="1"> </td>
</tr>
</c:if>
</table>
pre
{
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
width: 99%;
}
2 odpowiedzi
Twój problem to: width: 99%;
w pre
. Usuń tę linię.
small_pre
na przykład: <table class="small_pre"
> i w swoim css: table.small_pre pre {width:auto;}
Upewnij się, że linia pojawia się PO instrukcji pre {width: 99%}
lub użyj !important
by to przesłonić.
Nie (nad)używaj <pre>
. Po prostu użyj <c:out>
, aby uniknąć kodu HTML kontrolowanego przez użytkownika, aby zapobiec XSS.
<c:out value="${comments.comment}" />
<c:out>
lub fn:escapeXml()
, oznacza to, że tworzysz dużą dziurę XSS. Dlaczego usunąłeś te tagi? Czy to była ignorancja?
<c:out>
. Na przykład DB mógł zostać zmodyfikowany zewnętrznie. Ucieczkę JavaScript można również wykonać za pomocą <c:out>
. <script>
zostanie wtedy wydrukowany jako >script<
i nie wyrządzi żadnej szkody.
Podobne pytania
Nowe pytania
html
HTML (HyperText Markup Language) to język znaczników służący do tworzenia stron internetowych i innych informacji wyświetlanych w przeglądarce internetowej. Pytania dotyczące HTML powinny zawierać minimalny możliwy do odtworzenia przykład i pewne wyobrażenie o tym, co próbujesz osiągnąć. Ten tag jest rzadko używany samodzielnie i często jest łączony z [CSS] i [javascript].