2010-11-25 37 views
0

我有一个查询字符串在我的JSP:查询字符串替换为“#”不改变实际值

href='www.me-me.com/index.jsp?application=<%= 
    myBean.getApplication().replace("&","\\") 
%>&appId=<%= 
    myBean.getAppId() 
%>'>LINK 

现在我在index.jsp拿起appID使用请求对象,并使用该appId我从我的数据库中提取数据以填充页面。

但是,当myBean.getApplication返回类似Application ##1的东西时,我得到一个空白屏幕,肯定是因为在遇到"#"后查询变得越来越严重。

我可以使用replace()方法取代"#",但我不觉得可靠和好,因为我使用的请求对象再次出现在我index.jsp页拉动该应用程序的名称,替换哈希将使难看。那么有没有办法可以保留"#"

任何其他外的现成的溶液,将不胜感激。

回答

0

URL编码的值是做正确的事。

href='www.me-me.com/index.jsp?application=<%= 
    URLEncoder.encode(myBean.getApplication(), "UTF-8") 
%>&appId=<%= 
    URLEncoder.encode(myBean.getAppId(), "UTF-8") 
%>'>LINK 

您可以传输任何字符串值作为一个URL参数,但你必须正确编码,或您的网址就会折断,就像你正在经历它。

,就需要在您的网页

<%@ page import="java.net.*" %> 

声明,因为这是URLEncoder定义。

+0

编码值后,我WUD需要将它们(URLDecoder.decode)进行解码,同时将其存储到请求对象??? – Rocker 2010-11-26 04:41:45

3

使用JSTLc:urlc:param

<c:url var="url" value="http://www.me-me.com/index.jsp"> 
    <c:param name="application" value="${myBean.application}" /> 
    <c:param name="appId" value="${myBean.appId}" /> 
</c:url> 

<a href="${url}">LINK</a> 

无需与老式小脚本费尽口舌。

+0

+1。最简单的方法来实现它。 – 2010-11-26 08:07:51