2010-08-19 75 views
0

这是我的问题。用jstl解析字符串变量

我需要设置一个进程,最好使用jstl/jsp,这取决于客户端在URL参数中输入的内容,将返回一个特定的URL,传递相同的参数,并通过JavaScript弹出来打开功能。我有

问题,就是选择语句没有找到,除非其中的一个参数的开始参数之一。 (现在你的想法,“啊?”)

的客户端传递的参数列表,看起来像这样...

?name=personsname&email=personsemail&tmplatecde=7&legalid=20266998&photoURL=%2Favmedia%2Fweb%2Findex%2F25505893822%2EJPG&agentNumber=047666&FWSType=FR&des=,+CLU%AE,+ChFC%AE&postto=thenetwork.nmfn.com&agentnumber=047666&formname=FWSContactForm2&attr=FRSite 

的是参数的,我只真正需要的“表格名称”。但是,如果我把查询字符串放在那里,这是客户端期望的,它不会找到表单名称。将formname参数移动到'name'参数之前,它可以工作。

在我的公司,我们建立了一个自定义JSP标记,可以简单地采取查询字符串,并将其附加到指定的URL,但要确定网址,我需要检查什么表格名称等于过。

任何人是否有一个合适的方法来解析字符串来获取表格名称值的任何想法?

到目前为止,我有这个问题,重要的是

<c:choose><c:when test='${param.formname == "FWSContactForm2"}' > 

任何帮助将不胜感激的代码。

+0

尝试将formname参数移到左侧并测试,直到它工作。也许在其他参数中的字符是搞砸了? – Stian 2010-08-19 23:31:59

+0

当你到达JSTL和你的JSP页面时,查询字符串已经被servlet容器分解了。您应该通过确定所有参数实际上是什么进行调试,并且可能会告诉您URL的哪些部分在语法上无效,并导致servlet容器错过尾部参数。 – Pointy 2010-08-20 00:08:47

回答

1

它应该工作正常。然而,该查询字符串包含一个使用ISO-8859-1,%AE(注册商标®)进行了URL编码的特殊字符。也许servletcontainer正在使用错误的字符集对其进行解码,并且其中一个失败。删除%AE部分并重新测试。如果有效,我会调查有问题的servletcontainer的URL编码配置。另一方面,如果您完全控制应该发送此查询字符串的页面,则还可以将响应字符集设置为与servletcontainer所使用的相同。这会打破更少的事情。

+0

谢谢!有了这些信息,我就可以通过使用我们的自定义查询字符串变量并扫描formname参数来找出如何解决问题。比处理流畅的servletcontainer更容易。 – Brent 2010-08-20 17:44:05