grails学习(六)--问题小结

1.大坑:

在BootStrap中有自动添加几种书的记录时,要把所有的属性都要赋值,不然记录添加不到表中,同时赋值的时候还不能为空,不然还会添加不到表中。起初还以为配置出了问题,卸了重装,我脆弱的心灵需要呵护....
另外注意路径表示的时候,适用/,而不是windows下的\,不然容易报错。

2. 图片加载

图片加载不上去,本地出问题,可能是路径出了问题,${resource(dir: 'images', file: 'name.jpg')}可行,在photoUrl中存放文件名,将所有的图片放到web-app/images/下,<img src="${resource(dir: 'images', file: "${fieldValue(bean:goodsInstance,field:'photoUrl')}")}"/>这样即可表示图片链接,完成。
联网倒是可以加载上图片。
加载格式:<img src="${fieldValue(bean:goodsInstance,field:'photoUrl')}"/>
其中:photoUrl为图片网络地址。
也可以使用asset来加载图片,<img src="${assetPath(src:"9.jpg")}" >

3. fieldset与g:render

暂时没有看懂输入输出的建立和内容的填写。代码如下:

<g:hiddenField name="version" value="${goodsInstance?.version}" />
                --}%%{--<fieldset class="form">
                    <g:render template="form"/>
                    --}%%{----}%%{--上面一句话,创建了商品的修改模式--}%%{----}%%{--
                </fieldset>--}%%{--
                <fieldset class="buttons">

使用书上的教程,代码如下:

<g:form method="post">
                <input type="hidden" name="id" value="${goodsInstance?.id}"/>
                <br/>
                <input type="text" id="title" name="title" value="${fieldValue(bean:goodsInstance,field:'title')}"/>
                <br/>
                <input type="text" id="photoUrl" name="photoUrl" value="${fieldValue(bean:goodsInstance,field:'photoUrl')}"/>
                <br/>
                <input type="text" id="price" name="price" value="${fieldValue(bean:goodsInstance,field:'price')}"/>
                <br/>
                <g:actionSubmit class="save" action="update" value="Update"/>
                %{--update失败--}%
                </g:form>

结果只能显示出文本输入框,复选框能显示,但不显示可选内容(大概是因为没有传递进表单信息,如何传递?),而且不能update,失败。

4. actionSubmit参数

<g:actionSubmit class="save" action="update" value="Update"/>各个参数的含义不懂。value:显示的文本,action:指定接受请求的文本

5. ajax请求响应

ajax请求响应未成功,出现问题。之前出现的是jQuery未定义,原因:本地引用失败。

  • 网络引用:

后来不引用main模板,网络上提前引用jQuery.min.js和jQuery.form.min.js放在ajax.gsp中<head></head>之间。
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/jquery.form/4.2.2/jquery.form.min.js"></script>
还是出问题,500原因:输入链接的时候出现&会转化为html格式,将grails.viewsg.gsp.codec.expression="none",最后成功。、
>在控制器文件下书写println(n1,params.n1)出错,修改成两个即可。最终成功。

  • 本地引用:

参考文章 Grails手工增加资源文件
https://ask.helplib.com/jquery/post_961865
runtime ":jquery:1.11.1"直接下载jquery插件,在使用jquery的gsp页面里添加

<g:javascript library='jquery'/>
<r:layoutResources/>

或者

<r:require module="jquery"/>
<r:layoutResources/>
  • 使用main模板:尚待解决。

6. ajaxForm

书写成功,输入框输入数据,计算输入值的和。

7. 插件或者依赖下载和安装:

参考 Grails中引入依赖包/框架/插件

  • 选择mavengrails.project.dependency.resolver = "maven" // or ivy
    1. 在BuildConfig.groovy文件中
    dependencies {//依赖
            runtime 'mysql:mysql-connector-java:5.1.27'
    }
    
    自动下载到.m2\repository\mysql\mysql-connector-java
    测试是否能使用:修改DataSource.groovy添加一个已经存在的mySQL数据库,最终生成的网页能够显示出数据库中的数据。
    1. 添加插件twitter-bootstrap:2.2.2
     plugins {
             // plugins needed at runtime but not for compilation
             runtime ":jquery:1.11.1"
             runtime ":twitter-bootstrap:2.2.2"
     }
    
    自动下载到.m2\repository\org\grails\plugins\twitter-bootstrap文件夹下。同时所有的插件在项目\target\work\plugins文件夹下存在。
  • 选择ivy
    grails.project.dependency.resolver = "ivy" // or maven
    mysql-connector-java:5.1.27自动下载到.grails\ivy-cache\mysql\mysql-connector-java\jars
    runtime ":twitter-bootstrap:2.2.2"自动下载到.grails\ivy-cache\org.grails.plugins
    运行正常无错。

8. 导入bootstrap模板

可以参考文章https://blog.csdn.net/laoxue6699/article/details/9788693,自建模板main,之后适用即可
使用bootstrap模板进行设计界面,更省事,更好看。

  1. 下载twitter-bootstrap
    bootstrap详细使用参考https://github.com/groovydev/twitter-bootstrap-grails-plugin
    在Buildcofig.groovy下修改plugins :runtime ":twitter-bootstrap:2.2.2"也可以是最新版3.3.5。
  2. 下载asset-pipeline,如果不知道具体插件名和版本,可以使用在命令行下使用 graisl list plugin查询,然后在plugins下添加runtime ":asset-pipeline:2.14.1",即可添加成功。好像如下代码也行,链接在http://plugins.grails.org/plugin/grails/asset-pipeline,有点搞不懂grails中插件下载的方式,是plugins还是dependencies。
    dependencies {
    compile 'org.grails.plugins:asset-pipeline:3.2.1'
     }
    
  3. 使用runtime形式先试试,之后搜索bootstrap进入官网,下载bootstrap源码,解压后的目录放置到项目文件下grails-app/asset/parties文件夹下,parties可以新建,之后在主页main.gsp模板上适用<asset:>加载,bootstrap.css和bootstrap.js以及选择的模板.css,结果在index上引用main.gsp,显示结果失败。原因未知。
  4. 而在index下直接引用bootstrap.css和bootstrap.js以及选择的模板.css生成合适的结果,问题:如何正确引用模板上加载的css或者js???
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,711评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,043评论 25 709
  • 1、假消息攻击是指利用网络协议设计中的安全缺陷,通过发送伪装的数据包达到欺骗目标、从中获利的目的。 是一种内网渗透...
    minlover阅读 5,513评论 0 5
  • 喜欢老徐,包括她的电影,《将爱》看了无数遍了,看一次哭一次。每多看一次,对爱情的理解就多深刻一点。 很多人不...
    书恋阅读 1,696评论 2 2
  • 今天星期一上班第一天,早上六点起了床,去理工大学演示迎新系统,汇总了很多意见,感觉又要大干一场了,结束完理工的演示...
    Even丶阅读 877评论 0 0