﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava--随笔分类-grails</title><link>http://www.blogjava.net/leekiang/category/38341.html</link><description>MDA/MDD/TDD/DDD/DDDDDDD</description><language>zh-cn</language><lastBuildDate>Thu, 19 Aug 2010 21:31:54 GMT</lastBuildDate><pubDate>Thu, 19 Aug 2010 21:31:54 GMT</pubDate><ttl>60</ttl><item><title>flash</title><link>http://www.blogjava.net/leekiang/archive/2010/06/07/322962.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Mon, 07 Jun 2010 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/06/07/322962.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/322962.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/06/07/322962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/322962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/322962.html</trackback:ping><description><![CDATA[
		<a target="_blank" href="http://en.wikipedia.org/wiki/Post/Redirect/Get">Post/Redirect/Get (PRG)</a> is a common design pattern for web developers to help avoid certain duplicate form  submissions and allow user agents to behave more intuitively with bookmarks and the refresh button.<br />PRG模式也称为post-redirect pattern或Redirect-After-Post pattern<br /><br />http://forum.springsource.org/showthread.php?t=73939<br />http://jira.springframework.org/browse/MOD-458<br />http://jira.springframework.org/browse/SPR-6464<br />http://blog.vichasconsulting.com/archives/12<br />http://forum.springsource.org/showthread.php?t=38466<br />http://www.docin.com/p-56268947.html<br /><img src ="http://www.blogjava.net/leekiang/aggbug/322962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-06-07 13:34 <a href="http://www.blogjava.net/leekiang/archive/2010/06/07/322962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails笔记</title><link>http://www.blogjava.net/leekiang/archive/2010/05/26/321946.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Wed, 26 May 2010 10:49:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/05/26/321946.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/321946.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/05/26/321946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/321946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/321946.html</trackback:ping><description><![CDATA[
		<a target="_blank" href="http://brimstone.javaeye.com/blog/373704">Grails 复杂查询及分页排序</a>
		<br />
		<br />如何配置输出hibernate SQL statement<br />有几种方法：<br />1. Modify conf\Config.groovy<br />    Change hibernate="off" to on<br />    但是这种方式输出的Hibernate信息比较多。<br />2. Modify DataSource.groovy<br />    Add logSql = true<br />    But didn't work now for Grails 1.0 RC4<br />3. Modify GRAILS_HOME\scripts\log4j.properties, add<br />    log4j.logger.org.hibernate.SQL=DEBUG<br />    这是目前最佳的方法<br />见http://hi.baidu.com/jacksonchenjp/blog/item/0fef184f9e2bac32aec3ab08.html<br /><br />http://www.javaeye.com/topic/52774<br />http://www.javaeye.com/topic/149489<br />http://www.javaeye.com/topic/250349<br />http://garyli.javaeye.com/blog/237100<br />http://seanwon.javaeye.com/blog/315677<br />http://bloodwolf-china.javaeye.com/blog/264035<br />http://bloodwolf-china.javaeye.com/blog/644420<br />http://stackoverflow.com/questions/2124157/acl-on-field-level-in-grails<br /><br /><a target="_blank" href="http://www.tomcatexpert.com/blog/2010/07/20/basic-tomcat-clustering-grails-applications">Basic Tomcat clustering for Grails applications</a><br /><img src ="http://www.blogjava.net/leekiang/aggbug/321946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-05-26 18:49 <a href="http://www.blogjava.net/leekiang/archive/2010/05/26/321946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails与jdbc</title><link>http://www.blogjava.net/leekiang/archive/2010/05/23/321646.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 22 May 2010 20:57:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/05/23/321646.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/321646.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/05/23/321646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/321646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/321646.html</trackback:ping><description><![CDATA[
		<p>因为要处理遗留代码，需要在 gog 中使用手工事务， 在 resources.groovy 中进行如下定义后</p>
		<div class="dp-highlighter">
				<div class="bar">
						<div class="tools">
								<embed src="http://phoenix-clt.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=testDataSourceTxManager(DataSourceTransactionManager)%7B%0A%20%20%20%20dataSource%20%3D%20ref('dataSource')%0A%7D" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15">
								</embed>
						</div>
				</div>
				<ol class="dp-default" start="1">
						<li>
								<span>
										<span>testDataSourceTxManager(DataSourceTransactionManager){  </span>
								</span>
						</li>
						<li>
								<span>    dataSource = ref(<span class="string">'dataSource'</span><span>)  </span></span>
						</li>
						<li>
								<span>}  </span>
						</li>
				</ol>
		</div>
		<pre style="display: none;" name="code" class="Groovy">testDataSourceTxManager(DataSourceTransactionManager){
    dataSource = ref('dataSource')
}</pre>
		<p> 发现 service 中的事务没了。</p>
		<p> 查了一下 Grails 的源码， 原来 grails 在进行事务管理器查找的时候，并不是用的 bean 名字去查找，而是查找 所有 是 
TransactionManager 实例 的 Bean， 并从得到的数组中 取第一个作为事务管理器。</p>
		<p> 因此要使用 spring 的 DataSourceTransactionManager 的， 就不能将这个 Manager 在 
Context 中定义了。只能通过自己 new 一个 单例的 DataSourceTransactionManager， 然后将 
DataSource 传入，这样就可以用了..........</p>
		<p>来源:http://phoenix-clt.javaeye.com/blog/430400</p>
		<p>
				<br />
		</p>
		<p>http://osdir.com/ml/lang.groovy.grails.user/2008-04/msg00663.html<br /></p>
		<p>How to operate the partition table with Hibernate &amp; GORM<br /></p>
		<p>Sorry I had been on a business trip for a few days<br />
Although the Hibernate Shards has some urgent limitations, like 
'Cross-Shard<br />
Object Graphs' , it is a wonderful solution for this. But the Hibernate<br />
Shards has implemented its own Session/SessionFactory(etc.), maybe bring<br />
GROM some troubles.<br /><br />
Thanks for your reply. And to look forward to that GROM can support<br />
Hibernate Shards.</p>
		<p>
				<br />
		</p>
		<p>To take an advantage of the Spring JDBC Template for any Grail 
application, the first thing you need to do, is to define the DataSource
 bean in  resources.groovy , Don't forget to have the jdbc driver(.jar) 
corresponding to your backend database server under the lib folder of 
your grail application. <br /></p>
		<p>
				<br />
		</p>
		<p>http://www.rimple.com/tech/2010/3/25/calling-postgresql-stored-procedures-from-grails-part-1-the.html</p>
		<p>http://www.blogjava.net/rain1102/archive/2008/07/18/215891.html<br /></p>
<img src ="http://www.blogjava.net/leekiang/aggbug/321646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-05-23 04:57 <a href="http://www.blogjava.net/leekiang/archive/2010/05/23/321646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails权限，Shiro等</title><link>http://www.blogjava.net/leekiang/archive/2010/05/23/321640.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 22 May 2010 16:34:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/05/23/321640.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/321640.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/05/23/321640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/321640.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/321640.html</trackback:ping><description><![CDATA[http://www.ibm.com/developerworks/cn/opensource/os-cn-shiro/index.html<br />grails-spring-security-core<br /><img src ="http://www.blogjava.net/leekiang/aggbug/321640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-05-23 00:34 <a href="http://www.blogjava.net/leekiang/archive/2010/05/23/321640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails插件</title><link>http://www.blogjava.net/leekiang/archive/2010/05/21/321510.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Thu, 20 May 2010 16:55:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/05/21/321510.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/321510.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/05/21/321510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/321510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/321510.html</trackback:ping><description><![CDATA[1，基于Flash图表组件Open Flash Chart的chart插件<br />http://svn.codehaus.org/grails-plugins/grails-ofchart<br />http://mybytes.wordpress.com/2009/03/09/grails-open-flash-chart-06-is-out/<img src ="http://www.blogjava.net/leekiang/aggbug/321510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-05-21 00:55 <a href="http://www.blogjava.net/leekiang/archive/2010/05/21/321510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails笔记</title><link>http://www.blogjava.net/leekiang/archive/2009/03/18/260356.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Tue, 17 Mar 2009 17:53:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2009/03/18/260356.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/260356.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2009/03/18/260356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/260356.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/260356.html</trackback:ping><description><![CDATA[1,网上资源<br />http://groups.google.com.hk/group/grailsunion<br />http://grails.group.javaeye.com/<br /><br />2,grails知名应用<br /> grailsflow<br /> grailsblog<br />http://www.grails.org/OpenSource+Projects<br />   http://code.google.com/p/grailsblog http://www.grailsblog.com<br /> http://code.google.com/p/grails-domain-uml/<br />http://code.google.com/p/grails-petstore<br />http://code.google.com/p/ket-framework/<br />http://code.google.com/p/grailsmda<br />http://code.google.com/p/6footplus/<br />http://code.google.com/p/grum/<br />http://code.google.com/p/groovyblogs<br />http://code.google.com/p/simpejob<br />http://code.google.com/p/biz-portal<br />http://code.google.com/p/grailsportal<br />http://svn.codehaus.org/grails/trunk/grails-samples/grails.org/<br />http://www.grailsdeveloper.com/blog/2008/09/a-lot-of-grails-sample-applications-grails-open-source-projects/<br /><br />3,工具<br />  grails文档里说没有自带功能测试，但支持<a target="_blank" href="http://webtest.canoo.com/">Canoo WebTest</a><br /><br />4,网站<br />  http://www.grailsjobs.com/<br /><br />4,好文章<br />  ibm网站有一系列Mastering Grails文章，非常棒。主题有 Testing your Grails application， Grails in the enterprise，Asynchronous Grails with JSON and Ajax等十来个。<br />  http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=mastering+grails<br />  http://www.ibm.com/developerworks/java/library/j-grails10148/index.html<br />  <br />  <a target="_blank" href="http://www.java3z.com/cwbwebhome/article/article2/2962.html?id=1668">SiteMesh学习入门</a><br /><br />GRAILS对于我这样的所谓老Java程序员来说，上手还是挺容易的，所谓最难掌握的闭包概念，我认为可以简单的认为是以前的匿名类+委托（当然
还有很多其他的好处）。GRAILS给控制器划分了一个Service层，在业务逻辑重用上，比RAILS做的更好。GRAILS相对没有太多的单复数规
约，相对RAILS的“约定”要简单很多。GRAILS目前没有RAILS那么强大的路由功能，不过反而可以带来的相对简单。
<p>言归正传，其实我这里不是准备比较两个框架的优劣，而是想分享一下GRAILS多对多查询的一些经验。关于GRAILS本身还有GROOVY，我建议大家可以看看<a href="../../BlueSUN/archive/2007/04/23/112978.html">这里</a>。 <span id="more-120"></span></p>
GRAILS使用Hibernate作为ORM的基础。方便的同时也带来一些复杂，比如多对多查询。假设我有两个领域模型（其实就是rails里面的model，不过Java的东西嘛，总是比较学术化）<br /><code><br />
class Product {<br />
static hasMany=[scenario:Scenario]<br />
static belongsTo=Scenario<br />
}<br />
class Scenario{<br />
static hasMany=[product:Product</code>]<br />
}<br /><br />
如果我要查询Product中，所属scenario在scenario表中的id为1，可以通过如下的方法查询：<br /><code><br />
def scenario=Scenario.get(1)<br />
return scenario? Product.findAll("from Product p where :scenario in elements(p.scenario)",[scenario:scenario]):[]<br />来源：http://www.leesoft.com.cn/2009/04/12/grails%E5%A4%9A%E5%AF%B9%E5%A4%9A%E7%9A%84%E6%9F%A5%E8%AF%A2%E6%9E%84%E9%80%A0/<br /><br />http://rainboyan.com/post/use_groovy_tables_to_doc.html<br /></code><font style="" size="-1">可以通过<a href="http://groovy.codehaus.org/COM+Scripting"><font color="#c60a00">Scriptom</font></a>（现在还是beta版）嵌入vbs、js脚本（包括使用WSH,FSO）或者调用InternetExplorer、Media Player、Word和Excel等windows组件</font><br /><br />Groller项目启动http://rainboyan.com/post/groller_was_launched.html<br />http://code.google.com/p/rainboyan/source/browse/groller<br /><br />http://www.blogjava.net/emu/archive/2005/05/18/4784.html里面有讲到8皇后<br /><img src ="http://www.blogjava.net/leekiang/aggbug/260356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2009-03-18 01:53 <a href="http://www.blogjava.net/leekiang/archive/2009/03/18/260356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>