使用ring和gradle的html页面路径

时间:2017-03-26 12:34:08

标签: gradle clojure ring

我的文件夹结构如下所示

    <ListView ItemsSource="{x:Bind Path=Names}">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="x:String">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="auto" />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>

                    <Ellipse
                        Width="96"
                        Height="96"
                        Fill="{x:Bind Converter={StaticResource NameToColorConverter}}" />

                    <TextBlock
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        FontSize="45"
                        Foreground="White"
                        Text="{x:Bind Converter={StaticResource NameToInitialConverter}}" />

                    <TextBlock
                        Grid.Column="1"
                        Margin="8"
                        VerticalAlignment="Center"
                        FontSize="32"
                        Text="{x:Bind}" />

                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

在我我有一个src main clojure .../core.clj webapp WEB-INF index.html 码头功能

core.clj

main有此代码

(ns com.lapots.platform.web.core
    (:use ring.adapter.jetty)
    (:use com.lapots.platform.web.router.core)
    (:require [ring.middleware.reload :refer [wrap-reload]])
    (:import [org.eclipse.jetty.server.handler StatisticsHandler])
    (:gen-class))

(def a-minute 60000)

(defn conf
    [server]
    (let [stats-handler (StatisticsHandler.)
          default-handler (.getHandler server)]
        (.setHandler stats-handler default-handler)
        (.setHandler server stats-handler)
        (.setStopTimeout server a-minute)
        (.setStopAtShutdown server true)))

(def app
    (-> routes
        wrap-reload))

(defn -main [& args]
    (run-jetty app {:port 3000 :configurator conf :join? false}))

我将router/core.clj服务器作为典型的(ns com.lapots.platform.web.router.core (:require [compojure.core :refer [defroutes GET ANY]] [liberator.core :refer [defresource resource]] [ring.util.response :as resp])) (defresource rest-handler :handle-ok "rest response" :etag "fixed-etag" :available-media-types ["text/html"]) (defn wrapped-file-response [request] (println "Attempt to read index.html") (resp/resource-response "index.html" {:root "resources"})) (defroutes routes (GET "/" request rest-handler) (GET "/home" request wrapped-file-response)) 任务启动

jetty

但它无法解析gradle文件。 (task startServer(dependsOn: classes, type: JavaExec) { main = 'com.lapots.platform.web.core' classpath = sourceSets.main.runtimeClasspath } 会返回正确的index.html消息。

如何为/指定rest response页面的路径?

1 个答案:

答案 0 :(得分:1)

您没有显示build.gradle,因此我无法确定您的类路径的配置方式。如果您使用默认值,那么问题是您的index.html文件在类路径上不可用,因为它应该在${rootDir}/src/main/resources下(这是应该包含在的资源/非代码文件的默认位置)当resources ring.util.response/resource-response配置为:root时,resource子目录中的{class}}。

因此,您的index.html应位于以下路径下:${rootDir}/src/main/resources/resources/index.html