Problemas com o caractere "\" no JSP...[Resolvido]

6 respostas
supertchuco

Boa tarde a todos…

Sou iniciante em jsp e estou com um problema que não sei exatamente o que é, bom o dilema acontece quando o jsp, busca os dados do banco e popula uma tabela, se o valor do campo é uma string qualquer vem normal, mas se o usuário colocar por exemplo isso na string = “hdev\bla”, o campo sai do java normal, mas quando aparece no jsp na tela fica como “hdev/bla”, pois é, não faço nem idéia o que é isso…
Abaixo o jsp:

<%@ page import="com.adp.decs.model.entity.Application;"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
<%@ taglib prefix="decs" uri="decs-tags" %>

<s:form name="findForm" id="findForm" method="post">

	<s:include value="/jsp/findFilter.jsp" />

	<s:component templateDir="template" theme="adp" template="pageTitle">
		<s:param name="title" value="'Search Application'" />
	</s:component>

	<table width="100%" border="0" cellspacing="0" cellpadding="4" bordercolor="#BFBFBF" bgcolor="#BFBFBF">
		<tr>
			<td width="100px">
				<s:label value="Application/Alias"/>
			</td>
			<td>
				<sx:autocompleter id="optionsApplication" name="findFilter.application.name" maxlength="200"
					autoComplete="true" preload="false" cssClass="autocompleterWidth200"
					loadOnTextChange="false" iconPath="/images/default_down_arrow.gif" resultsLimit="-1" 
					list="applicationNamesAndAliases" listKey="value" listValue="value" keyName="name"/>
			</td>
		</tr>
		<tr>
			<td>
				<s:submit value="Find" action="Application_list" align="left" onclick="prepareFind();" appFuncName="Search Application" />
			</td>
		</tr>
	</table>

	<table width="100%" border="0">
		<tr>
			<td width="50%">
				<s:component templateDir="template" theme="adp" template="pagination">
					<s:param name="totalRecordCount" value="paginatedValueList.totalCount" />
					<s:param name="rowsPerPage" value="findFilter.rowsPerPage"/>
					<s:param name="startRow" value="findFilter.startRow"/>
				</s:component>
			</td>
			<td>
				<s:label value="Rows Per Page"></s:label>
				<s:select label="Rows Per Page" name="findFilter.rowsPerPage" id="findFilter.rowsPerPage" onchange="$('findFilter.startRow').value = 0;" list="findFilter.rowsPerPageList" />
			</td>
			<td align="right">
				<s:submit value="Add New" action="Application_addNew" appFuncName="Add Application" />
			</td>
		</tr>
	</table>

	<s:actionmessage cssClass="ADPUI-messageConfirm" cssStyle="width='100%'" />
	<s:actionerror cssClass="ADPUI-messageError" cssStyle="width='100%'" />

	<div id="dynamicDiv" style="width: 100%; height: 350; overflow: auto;">
		<table id="dynamicTable" cellspacing="1" class="ADPUI-table" cellspacing="1" cellpadding="1" style="max-height: 350">
			<thead>
				<tr>
					<th width="30%" id="th_name" onclick="javascript:submitOrder(this);" class="sortable">
						<s:a href="#">Application</s:a>
					</th>
					<th width="15%" id="th_alias" class="sortable">
						<s:a href="#">Alias</s:a>
					</th>
					<th width="15%" id="th_version" class="sortable" >
						<s:a href="#">Version</s:a>
					</th>
					<th width="20%" id="th_<%= Application.SORT_BY_CREATION_DATE %>" onclick="javascript:submitOrder(this);" class="sortable">
						<s:a href="#">Creation Date</s:a>
					</th>
					<th width="15%" id="th_createdBy" onclick="javascript:submitOrder(this);" class="sortable">
						<s:a href="#">Created By</s:a>
					</th>
				</tr>
			</thead>
			<tbody>
			<s:iterator value="paginatedValueList.result" var="app" status="itStatus">
				<decs:security>
					<decs:ifHas appFuncName="Edit Application">
						<s:url id="editUrl" action="Application_edit">
							<s:param name="id" value="%{#app.id}" />
						</s:url>
					</decs:ifHas>
					<decs:elseHas>
						<s:set name="editUrl" value="" />
					</decs:elseHas>
				</decs:security>
				<tr class="<s:if test="#itStatus.odd == true ">odd</s:if><s:else>even</s:else>" 
					ondblclick="editAction('<s:property value="%{#editUrl}" />')"
					onclick="highlightRow(this)">
					<td>
						<s:property value="%{#app.name}" escape="html" escapeJavaScript="true" />
					</td>
					<td>
						<s:iterator value="%{#app.applicationAliases}" var="alias" status="itStatusAppVer">
							<s:property value="%{#alias.name}" escape="html" escapeJavaScript="true" /><br/>
						</s:iterator>
					</td>
					<td>
						<s:iterator value="%{#app.applicationVersions}" var="appVersion" status="itStatusAppVer">
							<s:property value="%{#appVersion.name}" escape="html" escapeJavaScript="true" /><br/>
						</s:iterator>
					</td>
					<td>
						<s:date name="%{#app.creationDate}" format="%{getText('default.date.format')}" />
					</td>
					<td>
						<s:property value="%{#app.createdBy}" escape="html" escapeJavaScript="true" />
					</td>
				</tr>
			</s:iterator>
			</tbody>
		</table>
	</div>
	
</s:form>

Agradeço por qualquer ajuda…

6 Respostas

luciano2

Você pode colocar somente o trecho de código que escreve a string “hdev/bla”, analizar uma jsp inteira e dizer onde está o erro é meio dificil.

supertchuco

Foi mal, abaixo tá a div da tabela onde aparecem os dados…, alias em qualquer coluna da tabela acontece esse erro…

<div id="dynamicDiv" style="width: 100%; height: 350; overflow: auto;">
		<table id="dynamicTable" cellspacing="1" class="ADPUI-table" cellspacing="1" cellpadding="1" style="max-height: 350">
			<thead>
				<tr>
					<th width="30%" id="th_name" onclick="javascript:submitOrder(this);" class="sortable">
						<s:a href="#">Application</s:a>
					</th>
					<th width="15%" id="th_alias" class="sortable">
						<s:a href="#">Alias</s:a>
					</th>
					<th width="15%" id="th_version" class="sortable" >
						<s:a href="#">Version</s:a>
					</th>
					<th width="20%" id="th_<%= Application.SORT_BY_CREATION_DATE %>" onclick="javascript:submitOrder(this);" class="sortable">
						<s:a href="#">Creation Date</s:a>
					</th>
					<th width="15%" id="th_createdBy" onclick="javascript:submitOrder(this);" class="sortable">
						<s:a href="#">Created By</s:a>
					</th>
				</tr>
			</thead>
			<tbody>
			<s:iterator value="paginatedValueList.result" var="app" status="itStatus">
				<decs:security>
					<decs:ifHas appFuncName="Edit Application">
						<s:url id="editUrl" action="Application_edit">
							<s:param name="id" value="%{#app.id}" />
						</s:url>
					</decs:ifHas>
					<decs:elseHas>
						<s:set name="editUrl" value="" />
					</decs:elseHas>
				</decs:security>
				<tr class="<s:if test="#itStatus.odd == true ">odd</s:if><s:else>even</s:else>" 
					ondblclick="editAction('<s:property value="%{#editUrl}" />')"
					onclick="highlightRow(this)">
					<td>
						<s:property value="%{#app.name}" escape="html" escapeJavaScript="true" />
					</td>
					<td>
						<s:iterator value="%{#app.applicationAliases}" var="alias" status="itStatusAppVer">
							<s:property value="%{#alias.name}" escape="html" escapeJavaScript="true" /><br/>
						</s:iterator>
					</td>
					<td>
						<s:iterator value="%{#app.applicationVersions}" var="appVersion" status="itStatusAppVer">
							<s:property value="%{#appVersion.name}" escape="html" escapeJavaScript="true" /><br/>
						</s:iterator>
					</td>
					<td>
						<s:date name="%{#app.creationDate}" format="%{getText('default.date.format')}" />
					</td>
					<td>
						<s:property value="%{#app.createdBy}" escape="html" escapeJavaScript="true" />
					</td>
				</tr>
			</s:iterator>
			</tbody>
		</table>
	</div>

Se precisarem de outro arquivo é só falar…

luciano2

Cara sem saber qual é o nome do campo que você está escrevendo e ainda com um código enorme não dá para saber onde está o erro. Não tenho nem como testar. Pega a linha que está escrevendo o campo na jsp e posta aqui.

supertchuco

Cara acho que é isso que tu tá pedindo, e na verdade o erro ocorre em qualquer campo que recebe uma string…, penso se não é problemas com caracteres de escape…, vi isso em um fórum, mas não entendi direito como se soluciona…

<th width="30%" id="th_name" onclick="javascript:submitOrder(this);" class="sortable">
						<s:a href="#">Application</s:a>
					</th>
luciano2

Qual é o nome do property que está vindo com o caracter , qual é a linha que você está usando para escrever a property.

Tenta substituir a \ por \ dentro da string.

supertchuco

Problema resolvido, tudo era causado pela tag abaixo…

<s:property value="%{#alias.name}" escape="html" escapeJavaScript="true" /><br/>

Quando mudei ela pra :

<s:property value="%{#alias.name}"/><br/>

Ficou normal, obrigado a todos…

Criado 6 de maio de 2010
Ultima resposta 7 de mai. de 2010
Respostas 6
Participantes 2