如何创建带有查询字符串参数的链接:
/path/to/view?param=358&name=Something+with+spaces
Run Code Online (Sandbox Code Playgroud)
在电梯里?我知道你可以简单地写它,我正在寻找一种明智的方法,对空格和其他特殊字符进行编码。例如:
Link("path/to/view").param("param", 358).param("name", "Something with spaces")
Run Code Online (Sandbox Code Playgroud)
预先感谢,艾格姆。
尝试通过使用Lift框架开始使用Scala,我在创建我想象的代码时遇到了常见问题:我有一个日期列表,每天都有一个列表,列出当天的项目(嵌套列表) ).
我的想法是采取这种方法:
<div class="lift:DaySnippet">
<h1 class="day">Name of Day</h1>
<ul class="day-items">
<!-- wanted to have a separate snippet but haven't made it work -->
<!-- <li class="lift:DayItemSnippet">Item content</li> -->
<li class="item">
<span class="name">Name</span>
<span class="desc">Description</span>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
最初我不会有内部片段,但认为这是有道理的.
所以我可以像这样定义一个片段:
class DaySnippet {
// Ignoring that this is a stupid way to define the data
val days = ("Monday", ("Item 1", "Item 1 Description") :: Nil) ::
("Tuesday", ("Item 2", "Item 2 Description") ::
("Item 3", "Item 3 Description") :: …Run Code Online (Sandbox Code Playgroud) 我们在项目中使用 Lift + Mapper(版本 2.4)。我们也使用每个请求的事务模式S.addAround(DB.buildLoanWrapper())。
在我们的一个请求中,我们需要嵌套事务,我们发现这是有问题的。我们发现可能的“黑客”之一是在单独的线程中启动事务(如下例所示),因为DB对象用于ThreadLocal管理当前连接和事务状态信息。
是否有任何实现比下面的更好(更安全并且没有多线程)?
\n\n import net.liftweb.db.{DefaultConnectionIdentifier, DB}\n import akka.dispatch.Future\n\n /**\n * Will create a new transaction if none is in progress and commit it upon completion or rollback on exceptions.\n * If a transaction already exists, it has no effect, the block will execute in the context\n * of the existing transaction. The commit/rollback is handled in this case by the parent transaction block.\n */\n def inTransaction[T](f: \xe2\x87\x92 …Run Code Online (Sandbox Code Playgroud) 我编写了一个程序来Maybe从一对中取出一个:
deMaybe :: (a, Maybe b) -> Maybe (a, b)
deMaybe (_, Nothing) = Nothing
deMaybe (x,Just y) = Just (x, y)
Run Code Online (Sandbox Code Playgroud)
我知道这Maybe是一个单子并且(,) a是一个函子(以及其他类型类)。我想知道是否缺少更高级别的功能,例如:
commute :: (Functor f, Monad m) => f (m a) -> m (f a)
Run Code Online (Sandbox Code Playgroud)
我的问题是:我可以deMaybe使用更通用的类型签名(例如假设的类型签名)来编写commute,承认我正在尝试将一个函子传递到另一个函子吗?fmap可以使用、>>=、 、 &c等函数来完成此操作吗pure?
我很困惑如何在调度和提升中组合json库来解析我的json响应.
我显然是斯卡拉新手.
我写了这段代码:
val status = {
val httpPackage = http(Status(screenName).timeline)
val json1 = httpPackage
json1
}
Run Code Online (Sandbox Code Playgroud)
现在我被困在如何解析twitter json响应
我试过使用JsonParser:
val status1 = JsonParser.parse(status)
Run Code Online (Sandbox Code Playgroud)
但得到了这个错误:
<console>:38: error: overloaded method value parse with alternatives:
(s: java.io.Reader)net.liftweb.json.JsonAST.JValue<and>
(s: String)net.liftweb.json.JsonAST.JValue
cannot be applied to (http.HttpPackage[List[dispatch.json.JsObject]])
val status1 = JsonParser.parse(status1)
Run Code Online (Sandbox Code Playgroud)
我不确定,无法弄清楚接下来要做什么,以便迭代数据,提取它并将其呈现到我的网页.
我知道斯卡拉.我用过mongoDB,redis,sbt,...后端的东西.
我知道基本的HTML,CSS和JavaScript,但从未做过真正的Web开发.
我不知道AJAX是什么.我真的不知道任何前端的东西.
在我开始尝试解决Lift之前,我应该学到什么?
我正在尝试在Eclipse中设置我的第一个scala lift项目,它是Not Simple(TM).
我所做的是通过以下方式通过Maven建立项目
mvn archetype:generate -U \
-DarchetypeGroupId=net.liftweb \
-DarchetypeArtifactId=lift-archetype-basic_2.9.1 \
-DarchetypeVersion=2.4-SNAPSHOT \
-DarchetypeRepository=http://scala-tools.org/repo-releases \
-DgroupId=demo.helloworld -DartifactId=helloworld -Dversion=1.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
然后我用这个创建了一个eclipse项目mvn eclipse:eclipse(因为找出所有的依赖关系,并将它们全部添加到构建路径中)
然后,该项目与已安装的Scala版本冲突.所以我从buildpath中删除了对scalalang的三个现有引用,并将我自己的scala添加到buildpath中.我正在使用scala 2.9.0.
现在可以构建项目,但是当我尝试运行RunWebApp时,会抛出异常:
Exception in thread "main" java.lang.NoClassDefFoundError: RunWebApp
Caused by: java.lang.ClassNotFoundException: RunWebApp
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: RunWebApp. Program will exit.
Run Code Online (Sandbox Code Playgroud)
我知道Eclipse Scala IDE中Scala-Lift项目的答案错误,建议在http://groups.google.com/group/scala-ide-user上提问, 但我希望有人可以指点我以某种方式回答有同样问题的其他人也可能找到答案
我正在安装hibernate空间,以下是官方网站文档中的步骤:
http://www.hibernatespatial.org/tutorial-hs4.html
问题在于图书馆的依赖性
为什么找不到图书馆:
postgis-jdbc:jar:1.5.3:编译
在官方网站上查找此库的版本:
http://postgis.refractions.net/download/
但不可用
终端上显示的消息如下:
[warn] http://scala-tools.org/repo-releases/org/postgis/postgis-jdbc/1.5.3/postgis-jdbc-1.5.3.jar
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: org.postgis#postgis-jdbc;1.5.3: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[info]
[info] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
Run Code Online (Sandbox Code Playgroud)
任何人都知道我如何解决这种依赖
非常感谢您的关注
我正在使用scala/lift作为Rest API.在引擎盖下,我正在生成xml,它将通过Xml.toJson()转换为json作为输出.
现在我注意到一些奇怪的行为让我疯狂.
例如,我有以下xml:
<data>
<item>
<foo>1</foo>
<bar>1</bar>
</item>
<item>
<foo>2</foo>
<bar>2</bar>
</item>
</data>
Run Code Online (Sandbox Code Playgroud)
xml.toJson()的结果如下所示:
JObject(
List(
JField(
data,JObject(
List(
JField(item,
JArray(
List(
JObject(
List(
JField(foo,JString(1)),
JField(bar,JString(1)))
),
JObject(
List(
JField(foo,JString(2)),
JField(bar,JString(2))
)
)
)
)
)
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
但如果我添加一个新的xml元素:
<data>
<baz>234</baz>
<item>
<foo>1</foo>
<bar>1</bar>
</item>
<item>
<foo>2</foo>
<bar>2</bar>
</item>
</data>
Run Code Online (Sandbox Code Playgroud)
关于JArray的结果是不同的:
JObject(
List(
JField(data,JObject(
List(
JField(baz,JString(234)),
JField(item,JObject(
List(
JField(foo,JString(1)),
JField(bar,JString(1))
))
),
JField(item,JObject(
List(
JField(foo,JString(2)),
JField(bar,JString(2))
))
)
)
))
)
Run Code Online (Sandbox Code Playgroud)
)
数组未定义,我有两个名为"item"的对象.这是正常行为吗?我想让数组没有包装一些"项目"标签.
我已经定义了这个函数来构建一个学生列表,每个学生都有他的名字,姓氏和图像,这取决于一个属性可以是刻度线还是十字形.我想将标签学术(我的图像)分配给onClick事件,以便在我的片段中调用一个名为学术(学生)的函数来接收学生,然后重定向到另一个页面.谁能帮我??
def students(xhtml: NodeSeq) = {
def bindStudents(template: NodeSeq): NodeSeq = {
studentsList.flatMap {
s => bind("studentTag", template, "name" -> s.Name, "surname" -> s.Surname,
AttrBindParam("academic", if (s.HasIssue("Academic")) tickUrl else crossUrl, "src"),
)}
}
bind("list", xhtml, "studentsList" -> bindStudents _)
}
def academic(s:Student)={
//do some stuff with s
redirectTo("/OtherPage.html")
}
Run Code Online (Sandbox Code Playgroud)
HTML代码
<list:studentsList>
<tr>
<td> <studentTag:name /> </td>
<td> <studentTag:surname /> </td>
<td>
<img studentTag:academic=""/>
</td>
</list:studentsList>
Run Code Online (Sandbox Code Playgroud) lift ×10
scala ×8
classpath ×1
eclipse ×1
haskell ×1
hibernate ×1
http ×1
json ×1
lift-mapper ×1
maven ×1
monads ×1
query-string ×1
transactions ×1
xml ×1