在Visual Studio 2010中打开基于文本的文件时,它将使用CRLF而不是原始文件的行结束格式编写我的编辑.我如何阻止VS这样做?任何一半体面的编辑都应具备此功能.
更糟糕的是,由于VS用CRLF中的部分编写了文件,然后(当再次打开文件时)会出现一个对话框,要求我转换文件行结尾.
如果我有一个类似于以下的请求映射:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令调用此请求:
http://example.com/test?i=
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
无法将类型'java.lang.String'的值转换为'int'类型; 嵌套异常是java.lang.NumberFormatException:对于输入字符串:""'
我可以通过阻止javascript客户端发送空参数,或者接受字符串值并仅解析它们是否为空白来解决这个问题.
更新:更高版本的spring现在实现了最初所需的行为.
我刚刚在4.3.5春季对此进行了测试,并且发现该行为现在实际上将空值转换为默认值而不提高a NumberFormatException
,因此; 我的原始映射现在工作正常.
我不确定这个行为改变的弹簧版本是哪个版本.
Visual Studio 2010默认默认为VB.NET项目而不是C#,我从2008年导入了我保存的设置,默认为C#项目,但没有解决问题.
我总是不小心创建VB.NET项目,然后在我面前删除项目并重新创建它的C#版本.
我想知道这种结构是否会导致错误:
lock(sync)
{
// something
lock(sync)
{
//something
lock(sync)
{
//something
}
}
}
Run Code Online (Sandbox Code Playgroud)
我运行这段代码,看起来很好,但在某些情况下可能会抛出错误?
我编写了一个单元测试,将文件写入文件系统,没有路径写入工作目录; 因此,如果从项目目录执行,则它在项目根目录中写入,如果在项目父目录中,则写入父目录根目录.
那么写入目标目录的正确方法是什么?很可能是目标目录中的目录?
如果我只是简单地指定target/
文件,它将写入父项目目标而不是项目目标.
更新:测试结束后我确实想要文件.该文件用于需要发送给第三方的第三方提取格式.可以打开/关闭测试以允许我仅在文件格式更改以便重新批准时才运行.这个文件不是一个大问题,但我想要一些容易找到的东西.
我想知道比较两个字符的正确方法是什么,而忽略了适用于所有文化的案例.另外,Comparer<char>.Default
在不忽略大小写的情况下测试两个字符的最佳方法是什么?这对代理对有用吗?
编辑:添加了示例IComparer<char>
实现
如果这有助于任何人这是我决定使用的
public class CaseInsensitiveCharComparer : IComparer<char> {
private readonly System.Globalization.CultureInfo ci;
public CaseInsensitiveCharComparer(System.Globalization.CultureInfo ci) {
this.ci = ci;
}
public CaseInsensitiveCharComparer()
: this(System.Globalization.CultureInfo.CurrentCulture) { }
public int Compare(char x, char y) {
return Char.ToUpper(x, ci) - Char.ToUpper(y, ci);
}
}
// Prints 3
Console.WriteLine("This is a test".CountChars('t', new CaseInsensitiveCharComparer()));
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何回显标准错误流并重定向可执行文件的错误流.
我来自Bourne shell和Korn shell背景,我将使用它;
# Write to stderr
echo "Error Message!" >&2
# Redirect stderr to file
/do/error 2>/tmp/err.msg
Run Code Online (Sandbox Code Playgroud) 我希望能够为我的应用程序提供测试ClickOnce服务器,用户可以并行运行生产版本和测试版本.这可能吗?
我首先尝试使用以下内容AssemblyInfo.cs
并更改ClickOnce部署中的名称,尽管所有这些都是使用测试版本覆盖用户的生产版本.同样,它们在返回生产服务器时也是如此.
#if DEBUG
[assembly: AssemblyTitle("Product Name - Test")]
#else
[assembly: AssemblyTitle("Product Name")]
#endif
Run Code Online (Sandbox Code Playgroud)
我想我还应该澄清两个部署位置彼此不同并且在不同的服务器上.
UPDATE
我也尝试根据调试模式设置清单的GUID,但它再次无法工作(下面使用虚拟GUID).
#if DEBUG
[assembly: Guid("AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA")]
#else
[assembly: Guid("BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB")]
#endif
Run Code Online (Sandbox Code Playgroud)
两者如何区分?似乎安装程序将它们视为两个单独的程序,因为我得到了每个程序的安装确认.虽然,当我安装第二个时,"添加/删除程序"只看到后者,虽然前者仍在磁盘上,因为我以后再重新安装它,它只是简单地运行,但随后添加/删除程序切换回到以前的名字.
我正在为新的JDK8 java.time类寻找一个模块.我查看了FasterXML GitHub项目列表,目前没有找到.
据我所知,Jackson仍然是针对JDK6编译的,所以不能直接使用这些类,并且必须将它构建为一个单独的模块,正如Joda所要求的那样.
我不介意启动这个项目,但是看看是否还有其他工作正在进行中.
我有一个ReST API到一个应用程序,其中找到了所有控制器/api/
,这些都返回JSON响应,@ControllerAdvice
其中处理所有异常以映射到JSON格式的结果.
这在春季4.0 @ControllerAdvice
现在支持匹配注释,效果很好.我无法解决的是如何返回401的JSON结果 - 未经验证和400 - 错误请求响应.
相反,Spring只是将响应返回给容器(tomcat),将其呈现为HTML.我如何拦截它并使用我@ControllerAdvice
正在使用的相同技术呈现JSON结果.
security.xml文件
<bean id="xBasicAuthenticationEntryPoint"
class="com.example.security.XBasicAuthenticationEntryPoint">
<property name="realmName" value="com.example.unite"/>
</bean>
<security:http pattern="/api/**"
create-session="never"
use-expressions="true">
<security:http-basic entry-point-ref="xBasicAuthenticationEntryPoint"/>
<security:session-management />
<security:intercept-url pattern="/api/**" access="isAuthenticated()"/>
</security:http>
Run Code Online (Sandbox Code Playgroud)
XBasicAuthenticationEntryPoint
public class XBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request,
HttpServletResponse response,
AuthenticationException authException)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED,
authException.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过使用BasicAuthenticationEntryPoint
直接写入输出流来解决401 ,但我不确定这是最好的方法.
public class XBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {
private final ObjectMapper om;
@Autowired …
Run Code Online (Sandbox Code Playgroud) c# ×4
java ×3
.net ×2
spring-mvc ×2
char ×1
clickonce ×1
comparison ×1
deployment ×1
jackson ×1
java-8 ×1
java-time ×1
junit4 ×1
locking ×1
maven ×1
newline ×1
powershell ×1
spring ×1
stderr ×1
string ×1