小编oys*_*yse的帖子

JSF中的GET参数的UTF-8编码

我在JSF中有一个搜索表单,它使用RichFaces 4自动完成组件和以下JSF 2页面和Java bean实现.我使用Tomcat 6和7来运行应用程序.

...
<h:commandButton value="#{msg.search}" styleClass="search-btn" action="#{autoCompletBean.doSearch}" />
...
Run Code Online (Sandbox Code Playgroud)

在AutoCompleteBean中

public String doSearch() {

   //some logic here
   return "/path/to/page/with/multiple_results?query=" + searchQuery + "&amp;faces-redirect=true";

}
Run Code Online (Sandbox Code Playgroud)

只要具有"searchQuery"字符串的所有内容都在Latin-1中,这种方法就可以正常工作,如果不在Latin-1中则不起作用.

例如,搜索"bodø"将自动编码为"bod%F8".但是,搜索"KraÐong"不起作用,因为它无法编码"Ð".

我现在尝试了几种不同的方法来解决这个问题,但它们都不起作用.

  • 我尝试使用URLEncode对searchQuery进行编码,但这只会导致双重编码,因为%编码为%25.
  • 我尝试使用java.net.URI来获取编码,但是给出与URLEncode相同的结果.
  • 我尝试在连接器中使用URIEncoding ="UTF-8"在Tomcat中启用UTF-8,但这只会使问题恶化,因为非ascii字符根本不起作用.

所以我的问题:

  1. 我可以改变JSF 2编码GET参数的方式吗?
  2. 如果我无法改变JSF 2编码GET参数的方式,我可以转动编码并手动完成吗?
  3. 我在做一些奇怪的事吗?这似乎是应该支持开箱即用的东西,但我找不到任何其他有同样问题的东西.

java redirect utf-8 character-encoding jsf-2

10
推荐指数
1
解决办法
5591
查看次数

如何分析Antlr语法

我有一个Antlr语法,目前大约有1200行.它解析我想要的语言,但对于至少一个构造,即使对于较小的输入文件,它也非常慢.对于构造的每个添加元素,执行时间似乎呈指数增长.

我想知道是否有任何关于调试/分析此类性能问题的良好指导.

我已经尝试过使用VisualVM,它给出了两个方法closureCheckingStopState和closure_的名称,但这并没有更接近于弄清楚语法有什么问题.

parsing antlr antlr4

8
推荐指数
2
解决办法
937
查看次数

在Android上开发和生产期间的不同配置值

我正在开发一个与服务器通信的Android应用程序.当我开发时,我希望应用程序使用一个服务器和端口,当在生产中部署它时,我希望它使用不同的服务器和端口.

我认为我可以将服务器名称和端口存储为字符串资源,然后在开发期间覆盖这些值.但这似乎不可能,因为没有量化的发展.

在开发和生产过程中为应用程序提供不同值的常用方法是什么?

android

6
推荐指数
1
解决办法
496
查看次数

从 UNC 路径加载 .Net 程序集失败,而 64 位没有修改权限

如果加载程序集的用户没有足够的访问权限,当我尝试从 64 位进程加载它们时,我遇到了找不到 .Net 程序集的问题。

从 32 位进程加载相同的程序集不是问题,如果运行 64 位进程的用户被授予修改权限,则加载不是问题。

dll 文件位于文件共享上(我假设它是 NTFS,但不完全确定)并从 UNC 路径加载。

这些 dll 不会加载到普通的 .Net 程序中,而是通过 Python.Net 在 Python 中使用,并通过普通的 Matlab .Net 集成在 Matlab 中使用。问题在 Python 和 Matlab 中是一样的,所以这表明问题出在 .Net 端。

.net c# python matlab python.net

4
推荐指数
1
解决办法
715
查看次数

使用语句中Perl哈希语法的描述

在Perl中允许以下内容

use constant MY_CONSTANT => 1
Run Code Online (Sandbox Code Playgroud)

但这与"使用"的文档不符,后者声明它可以列出一个列表.但是,上面不是正常方式的列表,如下面的命令所示.

perl -e 'use strict; my @l = "test" => 1; print "@l\n"
Run Code Online (Sandbox Code Playgroud)

这将打印"test"而不是"test 1".

这是一些特殊列表语法,可以与use语句一起使用,还是在其他情况下也允许使用?

perl

3
推荐指数
1
解决办法
81
查看次数

标签 统计

.net ×1

android ×1

antlr ×1

antlr4 ×1

c# ×1

character-encoding ×1

java ×1

jsf-2 ×1

matlab ×1

parsing ×1

perl ×1

python ×1

python.net ×1

redirect ×1

utf-8 ×1