小编Sco*_*ott的帖子

JSP技巧使模板更容易?

在工作中,我的任务是将一堆HTML文件转换成一个简单的JSP项目.它实际上是静态的,无需编程的服务器端逻辑.我应该提到我对Java完全不熟悉.JSP文件似乎可以很容易地使用常见的包含和变量,就像PHP,但我想知道一种简单的方法来获得类似模板继承(Django样式)或至少能够有一个base.jsp文件包含页眉和页脚,所以我可以稍后插入内容.

Ben Lings似乎在这里给出了一些希望: JSP模板继承 有人可以解释如何实现这个目标吗?

鉴于我没有太多时间,我认为动态路由有点多,所以我很高兴只是让URL直接映射到.jsp文件,但我愿意接受建议.

谢谢.

编辑:我不想使用任何外部库,因为它会增加我自己和其他从事项目工作的人的学习曲线,而我所工作的公司也签约了这样做.

另一个编辑:我不确定是否JSP tags有用,因为我的内容实际上没有任何模板变量.我需要的是一种能够做到这一点的方法:

base.html:

<html><body>
{ content.body }
</body></html>
Run Code Online (Sandbox Code Playgroud)

somepage.html

<wrapper:base.html>
<h1>Welcome</h1>
</wrapper>
Run Code Online (Sandbox Code Playgroud)

输出为:

<html><body>
<h1>Welcome</h1>
</body></html>
Run Code Online (Sandbox Code Playgroud)

我认为这会给我足够的多功能性来做我需要的一切.它可以实现,includes但我需要一个顶部和一个底部包括每个包装,这是一种凌乱.

java tags inheritance templates jsp

305
推荐指数
4
解决办法
11万
查看次数

为什么Haskell如此之大?

我是Haskell的新手,到目前为止很享受它.令我印象深刻的是,它似乎非常庞大,有许多语法结构和库可以为几乎所有东西定义函数.例如,Data.Map定义了近100个函数.Data.Set还定义了许多函数,Data.List也是如此,它还提供了许多与Data.Set相同的功能.

我有初学者的意见,为什么会这样(提供所有常见模式的功能,减少噪音),但我很想听听一些关于这个主题的资深意见.

syntax haskell

6
推荐指数
1
解决办法
597
查看次数

Haskell中的递归IO

在Haskell中,我可以轻松定义一个递归函数,它接受一个值并返回一个字符串:

Prelude> let countdown i = if (i > 0) then (show i) ++ countdown (i-1) else ""
Prelude> countdown 5
"54321"
Run Code Online (Sandbox Code Playgroud)

我想使用相同类型的设计从文件句柄中读取可用数据.在这种特殊情况下,我需要以与hGetContents相同的方式读取数据,但不要将句柄保留在"半封闭"状态,以便我可以循环与使用createProcess打开的进程的stdin/stdout句柄的交互:

main = do
    -- do work to get hin / hout handles for subprocess input / output

    hPutStrLn hin "whats up?"

    -- works
    -- putStrLn =<< hGetContents hout

    putStrLn =<< hGetLines hout

    where
        hGetLines h = do
            readable <- hIsReadable h
            if readable
                then hGetLine h ++ hGetLines h
                else []
Run Code Online (Sandbox Code Playgroud)

给出错误:

Couldn't match expected type `IO …
Run Code Online (Sandbox Code Playgroud)

io monads recursion haskell lazy-evaluation

5
推荐指数
2
解决办法
2926
查看次数

Haskell 中的 STM 和 unsafePerformIO

STM文档指出:

在原子内部使用 unsafePerformIO 也是危险的,但原因不同。有关更多信息,请参阅 unsafeIOToSTM。

在使用线程和异步异常时,有一些函数可以屏蔽异步异常,以便可以安全地分配和释放资源。

但是有很多unsafePerformIO在幕后使用的函数,例如中的allocAndFreezememory,并且在 STM 事务中强制包含此类表达式的 thunk 并不难。在 STM 事务中使用这些函数是否真的安全?是否存在可能导致内存泄漏或数据损坏的情况?mask在这种情况下是否有等价物?

谢谢

haskell stm

5
推荐指数
1
解决办法
128
查看次数

如何使用带镜头的IORef?

想知道如何最好地将Control.Lens包与IORefs 结合起来.具体来说,我希望能够使用atomicModifyIORef镜头,以便我可以提供类型的功能,a -> (a, b)并从操作返回一个值.代码段:

let inc x = (x+1, x)
ior <- newIORef ((1, 1) :: (Int, Int))
thisShouldBe1 <- ior & atomicModifyIORef ?? _1 inc -- this is the bit I'm stuck on
Run Code Online (Sandbox Code Playgroud)

haskell atomic haskell-lens ioref

4
推荐指数
1
解决办法
430
查看次数

如何使用参数化实例decleration(Data.Binary)?

来自Data.Binary:

instance (Binary e) => Binary (IntMap.IntMap e) where
    put = put . IntMap.toAscList
    get = liftM IntMap.fromDistinctAscList get
Run Code Online (Sandbox Code Playgroud)

我认为这意味着任何IntMap (Binary e)类型都是可序列化的,但它不会:

Data.Binary Data.IntMap> encode $ ((fromList [])::IntMap Int)

<interactive>:12:1:
    No instance for (Binary (IntMap Int))
      arising from a use of `encode'
Run Code Online (Sandbox Code Playgroud)

我如何使用提供的实例?

serialization haskell types instance

1
推荐指数
1
解决办法
77
查看次数