在Grails中,您可以使用JSON转换器在控制器中执行此操作:
render Book.list() as JSON
Run Code Online (Sandbox Code Playgroud)
渲染结果是
[
{"id":1,
"class":"Book",
"author":"Stephen King",
"releaseDate":'2007-04-06T00:00:00',
"title":"The Shining"}
]
Run Code Online (Sandbox Code Playgroud)
您可以通过在Config.groovy中进行设置来控制输出日期
grails.converters.json.date = 'javascript' // default or Javascript
Run Code Online (Sandbox Code Playgroud)
然后结果将是本机javascript日期
[
{"id":1,
"class":"Book",
"author":"Stephen King",
"releaseDate":new Date(1194127343161),
"title":"The Shining"}
]
Run Code Online (Sandbox Code Playgroud)
如果我想获得这样的特定日期格式:
"releaseDate":"06-04-2007"
Run Code Online (Sandbox Code Playgroud)
我必须使用'collect',这需要大量输入:
return Book.list().collect(){
[
id:it.id,
class:it.class,
author:it.author,
releaseDate:new java.text.SimpleDateFormat("dd-MM-yyyy").format(it.releaseDate),
title:it.title
]
} as JSON
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?
我的EAR结构如下:
APP.ear
- APP1.war
- WEB-INF/classes/log4j.properties
- APP2.war
- WEB-INF/classes/log4j.properties
- app1-ejb.jar
- app2-ejb.jar
- log4j.jar
- spring.jar
- commons-lang.jar (...and other jar)
Run Code Online (Sandbox Code Playgroud)
我希望每个WAR都有自己的应用程序日志.但似乎上面的配置不起作用.APP1和APP2的日志转到APP1的日志.反正有没有创建单独的应用程序日志?
只是想知道groovy方式与默认值进行值匹配吗?
if(params.max != 10 && params.max != 20 && params.max != 30){
params.max = 10
}
Run Code Online (Sandbox Code Playgroud) 我正在使用jQgrid的列选择器功能.有没有办法隐藏列选择器中的某些列(例如db id),以便用户无法"揭示"它们?
我正在创建一个bookmarklet,如果找不到该对象,它将加载jQuery.加载将检查jQuery的版本.代码如下:
(function(){
var myBkl = {
loadScript: function(src) {
if(window.jQuery && window.jQuery.fn.jquery == '1.3.2'){
return;
}
var s = document.createElement('script');
s.setAttribute('src', src);
s.setAttribute('type', 'text/javascript');
document.getElementsByTagName('head')[0].appendChild(s);
},
whenLoaded: function(callback){
if (typeof(window.jQuery) !== 'undefined' && window.jQuery.fn.jquery == '1.3.2') {
callback(window.jQuery);
}
else {
setTimeout((function() {myBkl.whenLoaded(callback); }), 100);
}
},
init: function($){
console.log($.fn.jquery);
}
};
myBkl.loadScript('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js');
myBkl.whenLoaded(myBkl.init);
})();
Run Code Online (Sandbox Code Playgroud)
我使用这个bookmarklet构建器来创建书签http://subsimple.com/bookmarklets/jsbuilder.htm
显然,如果页面已经加载了jQuery.加载1.3.2脚本将覆盖页面上的window.jQuery对象.我只是想知道有没有让1.3.2加载到另一个自命名变量?用jQuery.noConflict(true);
?
谷歌搜索"TDD"和"GWT"很容易导致这篇文章,作者解释了如何在没有容器的情况下测试GWT应用程序.但是,我认为他的例子不是测试驱动的,因为他先拥有所有设计,然后再编写测试,而不是"先测试".
这让我想到:是否有可能在像GWT这样的UI上进行"先测试"?有人说UI代码不适合TDD.但我认为通过采用MVC模式,也许我们至少可以测试MC部分?(因此V是无法开发测试驱动的UI部分).
我们将在文章示例中首先编写的第一个失败测试是什么?
我正在使用AngularJS ui-router
并ngAnimate
在移动设备中创建经典的滑动视图.
我发现在转换开始时,当两个视图都存在于页面上时,如果目标视图在视图端口之外,它将首先跳转到该视图位置,这给我们带来了这样的有趣效果:
反正有没有避免这个?
我正在使用keytool生成一个密钥库来配置本地开发jetty来运行ssl
keytool.exe -keystore jetty.keystore -alias jetty -genkey -keyalg RSA -sigalg SHA256withRSA
Run Code Online (Sandbox Code Playgroud)
Jetty配置:
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Arg>
<New class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="keyStore">jetty/jetty.keystore</Set>
<Set name="keyStorePassword">jetty6</Set>
<Set name="keyManagerPassword">jetty6</Set>
<Set name="trustStore">jetty/jetty.keystore</Set>
<Set name="trustStorePassword">jetty6</Set>
</New>
</Arg>
<Set name="port">8443</Set>
<Set name="maxIdleTime">30000</Set>
</New>
</Arg>
</Call>
Run Code Online (Sandbox Code Playgroud)
直到最近,它在Firefox Aurora和Chrome Canary等新浏览器中运行良好,它拒绝(在Firefox的情况下):
连接到localhost期间发生错误:8443.SSL在服务器密钥交换握手消息中收到了一个弱的短暂Diffie-Hellman密钥.(错误代码:ssl_error_weak_server_ephemeral_dh_key)
无法手动接受它.那么,我应该重新生成一个更强的密钥?或者它是码头的配置?
假设我有一个要解析的文本文件,其中包含一些固定长度的内容:
123jackysee 45678887
456charliewong 32145644
<3><------16------><--8---> # Not part of the data.
Run Code Online (Sandbox Code Playgroud)
前三个字符是ID,然后是16个字符的用户名,然后是8位电话号码.
我想写一个正则表达式来匹配并验证每一行的输入,我提出的那个:
(\d{3})([A-Za-z ]{16})(\d{8})
Run Code Online (Sandbox Code Playgroud)
用户名应包含8-16个字符.但([A-Za-z ]{16})
也会匹配空值或空格.我想,([A-Za-z]{8,16} {0,8})
但它会检测超过16个字符.有什么建议?
Java代码:
Transformer TRANSFORM_TO_INTEGER = new Transformer() {
public Object transform(Object input) {
Integer i = new Integer((String) input);
return i;
}
};
String begin = "1,2,3,4,5";
List strList = Arrays.asList(StringUtils.split(begin, ","));
CollectionUtils.transform(strList, TRANSFORM_TO_INTEGER);
Run Code Online (Sandbox Code Playgroud)
此代码将抛出ArrayStoreException:
java.lang.ArrayStoreException
at java.util.Arrays$ArrayList.set(Arrays.java:2360)
at java.util.AbstractList$ListItr.set(AbstractList.java:488)
at org.apache.commons.collections.CollectionUtils.transform(CollectionUtils.java:434)
Run Code Online (Sandbox Code Playgroud)
这是为什么?
我希望有一个输入在keyup上改为大写.所以我在keyup上附上一个简单的事件.
HTML
<input id="test"/>
Run Code Online (Sandbox Code Playgroud)
Javascript(使用jQuery)
$("#test").keyup(function(){
this.value = this.value.toUpperCase();
});
Run Code Online (Sandbox Code Playgroud)
但是我发现在Chrome和IE中,当你按下左箭头时,光标会自动移动到最后.我注意到我应该检测输入是否只是字母.我应该使用键码范围或正则表达式进行检测吗?
groovy ×2
java ×2
angularjs ×1
bookmarklet ×1
collections ×1
converters ×1
ear ×1
grails ×1
gwt ×1
javascript ×1
jetty ×1
jqgrid ×1
jquery ×1
json ×1
log4j ×1
ng-animate ×1
onkeyup ×1
plugins ×1
regex ×1
ssl ×1
tdd ×1
war ×1