我对Grails/Bootstrap/HTML和一般的web编程都很陌生。我不是it人员,但我必须为一个研究项目实现一个小的监测网站。我很确定我的问题有一个简单的解决方案——如果有人能帮助我,我将非常感激!
我正在使用IntelliJ与Grails 3,我正试图将SB Admin2 Bootstrap模板从Start Bootstrap集成到我的项目。
我的问题是,网站没有显示,因为它应该。首先,我试着遵循这个教程http://grails.asia/how-to-apply-a-commercial-bootstrap-theme-to-your-grails-application/,但它不适合我-不知道我在哪里失败了。然后我将index.html内容复制到我的gsp文件中。首先只有文本显示,然后我从这个帖子引导模板没有得到显示的答案,并添加了一个链接到BootstrapCDN -它工作了。但事实并非如此。截图
现在我的布局gsp文件的头看起来如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>SB Admin 2 -Bootstrap Admin Template</title>
<!-- Bootstrap Core CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="../vendor/metisMenu/metisMenu.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="../vendor/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
希望有人能帮助我!提前感谢!
edit1:如果我在html文件中使用IntelliJ预览,它会完美地工作。
首先,我看到你在javascript等的链接中使用了相对路径。
<link href="../dist/css/sb-admin-2.css" rel="stylesheet">
我更喜欢用绝对的
<link href="${request.contextPath}/css/sb-admin-2.css" rel="stylesheet">
我在不同的Grails应用程序中使用了一些Bootstrap-Layouts(在一个应用程序中甚至是sb-admin)。顺便说一句,让我试着解释一下我的方法。似乎它几乎与你的第一个链接相同,但另一个描述可能会有所帮助)…:
复制index.html到views->layout->main.gsp
将例如g:layoutBody放置在主界面的适当位置。GSP页面并删除对应用程序无用的元素。
<div id="page-wrapper"> <g:layoutBody/> </div> <!-- /#page-wrapper -->
复制javascript,图像等到web-app目录,并检查主目录中的引用。GSP布局,他们引用javascript等通过
<script src="${request.contextPath}/js/bootstrap.min.js"></script>
之后,您的视图可能看起来像这样:
<%@ page import="urlaub.Employee" %> <!DOCTYPE html> <html> <head> <meta name="layout" content="main"> <g:set var="entityName" value="${message(code: 'employee.label', default: 'Employee')}" /> <title><g:message code="default.list.label" args="[entityName]" /></title> </head> <body> <g:if test="${session.user.admin}"> <div class="row"> <g:link class="btn btn-primary btn-flat" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link> </div> </g:if> <g:render template="/flash_message" bean="${flash}" /> <div class="row"> <h1><g:message code="default.list.label" args="[entityName]" /></h1> <hr> </div>
Grails 3附带了资产管道插件来管理静态资产,最小化它们,等等。检查它的文档。在你的情况下,你应该把你的资源移动到相应的资源文件夹(javascript,样式表,图像)到de assets文件夹。
例如,要包含放置在assets/stylesheets/bootstrap/bootstrap.min.css中的css,你必须在你的gsp中包含以下内容:
<asset:stylesheet href="bootstrap/bootstrap.min.css"/>
javascript和assetPath的另一个例子:
<script type="text/javascript" src="${assetPath(src:'register.js')}"></script>