小编Sve*_*ges的帖子

Spring @ExceptionHandler不能与@ResponseBody一起使用

我尝试为休息控制器配置一个spring异常处理程序,该处理程序能够根据传入的accept头将映射呈现给xml和json.它现在抛出500个servlet异常.

这工作,它拿起home.jsp:

@ExceptionHandler(IllegalArgumentException.class)
public String handleException(final Exception e, final HttpServletRequest request, Writer writer)
{
    return "home";
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

@ExceptionHandler(IllegalArgumentException.class)
public @ResponseBody Map<String, Object> handleException(final Exception e, final HttpServletRequest request, Writer writer)
{
    final Map<String, Object> map = new HashMap<String, Object>();
    map.put("errorCode", 1234);
    map.put("errorMessage", "Some error message");
    return map;
}
Run Code Online (Sandbox Code Playgroud)

在同一控制器中,通过相应的转换器将响应映射到xml或json:

@RequestMapping(method = RequestMethod.GET, value = "/book/{id}", headers = "Accept=application/json,application/xml")
public @ResponseBody
Book getBook(@PathVariable final String id)
{
    logger.warn("id=" + id);
    return new Book("12345", new Date(), "Sven Haiges");
}
Run Code Online (Sandbox Code Playgroud)

任何人?

rest spring-mvc

26
推荐指数
5
解决办法
5万
查看次数

如果使用PUT,SpringMVC无法识别请求体参数

也许这应该不起作用,但至少我想了解为什么.我在PUT身体中传递了一个简单的val = somevalue 但是spring发回了一个,400 Bad Request因为它似乎没有识别出val参数.

类似的请求适用于POST.可能是SpringMVC没有将PUT请求体识别为参数源吗?

Content=-Type 在两种情况下都正确设置为application/x-www-form-urlencoded.

spring拒绝调用的方法是:

@RequestMapping(value = "config/{key}", method = RequestMethod.PUT)
@ResponseBody
public void configUpdateCreate(final Model model, @PathVariable final String key, @RequestParam final String val,
        final HttpServletResponse response) throws IOException
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

为了完整性,这里是jquery ajax调用.我看不出有什么不妥.客户端是Firefox 4或Chrome,两者都显示相同的结果.

$.ajax({
         url:url,
         type:'PUT',
         data:'val=' + encodeURIComponent(configValue),
         success: function(data) {...}
       });      
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

rest jquery spring-mvc

17
推荐指数
2
解决办法
2万
查看次数

Android BLE Beacon扫描

Android 4.3中添加了蓝牙LE,但似乎没有后台扫描模式,一旦注册通过附近的可用BLE UUID进行通知,它就会唤醒应用程序.

这似乎可以通过iOS7和iBeacons API实现.有没有人知道Android 4.3中是否有这样的功能,或者是否有针对BLE设备进行周期性扫描BLE环境的良好解决方法?

http://developer.android.com/guide/topics/connectivity/bluetooth-le.html

http://techcrunch.com/2013/09/11/estimote-details-ios-7-ibeacon-support-for-its-contextual-proximity-shopping-devices/

android bluetooth ibeacon-android

14
推荐指数
1
解决办法
2万
查看次数

如何最有效地使用Groovy/GPars处理CSV文件的行?

问题很简单,我很惊讶它在搜索时没有立即弹出.

我有一个需要处理的CSV文件,可能非常大.应将每一行传递给处理器,直到处理完所有行.为了读取CSV文件,我将使用OpenCSV,它实质上提供了readNext()方法,它给了我下一行.如果没有更多行可用,则所有处理器都应终止.

为此,我创建了一个非常简单的groovy脚本,定义了一个同步的readNext()方法(因为下一行的读取并不是非常耗时),然后创建了几个读取下一行并处理它的线程.它工作正常,但......

难道不应该有我可以使用的内置解决方案吗?这不是gpars集合处理,因为它总是假设内存中存在一个现有集合.相反,我无法将其全部读入内存并进行处理,这将导致内存异常.

所以....有一个很好的模板用于使用几个工作线程"逐行"处理CSV文件?

groovy

10
推荐指数
2
解决办法
2722
查看次数

NFC读卡器ACR 122与Android 4.1 Jelly Beans不兼容?

之前我使用过ACR 122,它与Android <4.1手机完美配合.我用它来交换P2P SNEP消息......但是由于手机有4.1,当你把手机放在它上面时,读卡器会开始发出哔哔声并闪烁.有没有其他人发现这种不兼容性?有解决方案吗

android nfc nfc-p2p

9
推荐指数
1
解决办法
4682
查看次数

在Spring中使用HTML5 Websockets

我想将Websockets与Spring MVC驱动的Web应用程序一起使用.我已经阅读了o jWebsockets和bristleback,但我想知道这是否是最好的集成方式.我相信有人之前已经做过这件事并且有一些有用的提示,有什么不可行的......

感谢名单!

spring-mvc websocket

7
推荐指数
3
解决办法
9852
查看次数

如果键盘出现,请将android视图保留在可见区域

我创建了一个简单的登录屏幕,从底部垂直堆叠登录按钮,用户名和密码编辑框.

当有人单击用户名/密码字段时,虚拟键盘会出现并隐藏其下方的编辑框或按钮.我在另一个应用程序中看到这个,登录按钮始终保持在可见区域....我怎么能实现这一点?

android

6
推荐指数
2
解决办法
5241
查看次数

iBeacon后台扫描

我写了自己的小BLE扫描服务,每隔3-5秒通过一次警报触发.它扫描1.1秒以获得它周围的信标,然后将RSSI信号转换为粗略接近.

我现在正在考虑Radius Networks Android iBeacon服务,但我想知道如何实现相同的后台扫描.

例如:我希望信标scannign在后台启动并运行,并将Intent接收到广播接收器,以决定我对扫描的信标做了什么.

有没有例子,估计这消耗了多少电池?

android ibeacon ibeacon-android

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

Jackson序列化配置

我在 Spring 3 MVC 应用程序中使用 Jackson JSON。为了不序列化每个日期字段,我创建了一个使用特定日期格式的自定义对象映射器:

@Component("jacksonObjectMapper")
public class CustomObjectMapper extends ObjectMapper
{
    Logger log = Logger.getLogger(CustomObjectMapper.class);

    @PostConstruct
    public void afterProps()
    {
        log.info("PostConstruct... RUNNING");
        //ISO 8601
        getSerializationConfig().setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SZ"));


    }

    //constructors...

}
Run Code Online (Sandbox Code Playgroud)

这个自定义的 ObjectMapper 被注入到 JsonConverter 中:

<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="supportedMediaTypes" value="application/json" />
    <property name="objectMapper" ref="jacksonObjectMapper" /> <!-- defined in CustomObjectMapper -->
</bean>
Run Code Online (Sandbox Code Playgroud)

日志和序列化工作没有例外,但它没有选择日期格式,它简单地序列化为时间戳。@PostConstruct注解起作用了,方法中的日志语句在日志中。

有谁知道为什么会失败?

spring json jackson

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

如何使用Android Studio Gradle构建复制或使用本机库?

我有一个本地的lib

/ libs/armeabi文件夹名为libparser.so和一个关联的jar文件.

我更改了gradle构建文件以包含jar文件,这看起来很简单(MYNEWJAR):

dependencies {
    compile files('libs/android-support-v4.jar', 'libs/MYNEWJAR.jar')
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,我认为它无法找到本机库:

E/AndroidRuntime(22569): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load parser from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.hybris.mobile.history-1.apk,libraryPath=/data/app-lib/com.hybris.mobile.history-1]: findLibrary returned null
E/AndroidRuntime(22569):    at java.lang.Runtime.loadLibrary(Runtime.java:365)
E/AndroidRuntime(22569):    at java.lang.System.loadLibrary(System.java:535)
E/AndroidRuntime(22569):    at com.senstation.android.pincast.Pincast.<clinit>(Pincast.java:1299)
E/AndroidRuntime(22569):    ... 17 more
Run Code Online (Sandbox Code Playgroud)

你能帮助我直接获取构建文件,它将包含本机库吗?这似乎是在Eclipse上自动发生的,但我真的想使用android studio.

谢谢!斯文

android gradle android-studio

5
推荐指数
2
解决办法
1万
查看次数