有没有办法访问所有请求参数,无论HTTP方法如何?我没有在Play Framework 2.0中找到方法,而是倾倒了文档和api.
我在一个接受POST和GET的网站上搜索.站点上的自定义跟踪会检查传入的所有参数,以确定存储跟踪数据的正确方法.
在Play Framework 1.2.x中,我能够从Controller中的请求访问参数
request.params.get("keywords")
request.params.get("location")
request.params.all()
Run Code Online (Sandbox Code Playgroud)
使用Play Framework 2.0,情况已不再如此.该请求不再有方法params,只有queryString和查询字符串只适用于GET和POST没有.
将每个可能的跟踪参数定义到Controller Action中是不可行的,它们是动态的.
更新:可能的解决方法是使用Body Parsers.
根据请求的内容类型,使用适当的解析器,例如application/form-url-encoded与application/json
这是结合POST参数和GET参数的原始Map,GET参数优先.
val params: collection.mutable.Map[String, Seq[String]] = collection.mutable.Map()
params ++= request.body.asFormUrlEncoded.getOrElse[Map[String, Seq[String]]] { Map.empty }
params ++= request.queryString
Run Code Online (Sandbox Code Playgroud) 我正在通过rails教程并且遇到困难.从代码清单8.16开始,我对以下内容进行了以下修改<timestamp>_add_remember_token_to_users.rb:
class AddRememberTokenToUsers < ActiveRecord::Migration
def change
add_column :users, :remember_token, :string
add_index :users, :remember_token
end
end
Run Code Online (Sandbox Code Playgroud)
该指南随后说像往常一样更新dev&test db:
$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare
Run Code Online (Sandbox Code Playgroud)
我对*remember_token*的用户测试仍然失败,所以我使用命令行sqlite3 查看了dev和测试数据库中的用户表.它们看起来像这样:
sqlite> .schema users
CREATE TABLE "users" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255),
"email" varchar(255),
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL,
"password_digest" varchar(255));
CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email");
Run Code Online (Sandbox Code Playgroud)
似乎我的迁移尚未运行,但我不知道如何强制它运行.
是否可以使用cron(通过when gem)直接在可安装的引擎模型上运行任务.我认为cron无法从主应用程序启动,因为可安装引擎应该是隔离的.
我可以在普通的rails应用程序中使用它并且它工作得很好,但我需要以引擎方式运行任务.
谢谢
所以有关于如何扩展Cassandra的相当数量的文档,但这是一个很好的资源,如何"卸载"Cassandra并从群集中删除节点?是否像关闭节点一样简单,让群集再次同步,然后重复?
原因是一个网站预计会出现高峰值的流量,几天内会从每日几千次点击上升到数十万次.该网站将提前"加速",启动Web服务器的多个实例,Cassandra等.在请求流量消退后,目标是关闭不再使用的实例,而不是支付服务器费用那只是坐着.
我想在 JRuby 中调用 Java 类的静态方法。目前为了实现这一点我使用:
class_name = "com.slackworks.naether.util.LogUtil"
clazz = eval(class_name)
clazz.setLogLevel( "debug" )
Run Code Online (Sandbox Code Playgroud)
必须使用 eval 将字符串转换为类似乎很笨拙。我环顾四周,但找不到 JRuby 助手来代替eval.
我需要将字符串转换为类的原因是,这种情况发生在通过 JRuby 或 RJB 处理请求的包装器中,具体取决于 Ruby 运行时。如果 Ruby 运行时使用 RJB,则调用将类似于:
class_name = "com.slackworks.naether.util.LogUtil"
clazz = Rjb::import( class_name )
clazz.setLogLevel( "debug" )
Run Code Online (Sandbox Code Playgroud) 对于我的LogBack记录器,我试图以编程方式创建一个写入ByteArrayOutputStream 的OutputStreamAppender.这是我到目前为止:
// Destination stream
ByteArrayOutputStream stream = new ByteArrayOutputStream();
// Get LoggerContext from SLF4J
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
// Encoder
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(context);
encoder.setPattern("%d{HH:mm:ss} %-5level %logger{36} - %msg%n");
encoder.start();
// OutputStreamAppender
OutputStreamAppender<ILoggingEvent> appender= new OutputStreamAppender<>();
appender.setName( "OutputStream Appender" );
appender.setContext(context);
appender.setOutputStream(printStream);
appender.setEncoder(encoder);
appender.start();
Logger log = context.getLogger(this.getClass());
log.addAppender(appender);
log.info( "text from logger");
// Output to stdout logback status
StatusPrinter.print(context);
Run Code Online (Sandbox Code Playgroud)
根据我读过的所有内容,这应该是正确的.Logger中没有任何内容写入流,并且OutputStreamAppender无法根据以下输出正确初始化StatusPrinter:
15:26:30,330 |-WARN in ch.qos.logback.core.OutputStreamAppender[OutputStream Appender] - Encoder has not been set. Cannot …Run Code Online (Sandbox Code Playgroud) 我一直尝试MimeMessage使用JavaMail api 创建一个类型的对象,然后获取它的原始表示,但没有成功.我唯一能获得的是电子邮件内容的原始表示,但不包括标题,主题或收件人.我感兴趣的任何建议,任何Java库,可以帮助我创建一个电子邮件对象,然后获得其原始表示.原始表示应该如下所示:
received: from imta14.emeryville.ca.mail.myisp.net ([nn.nn.30.46])
by alnrmxc19.isp.net (alnrmxc19) with ESMTP
id <20080930215116a19007q9u6e>; Tue, 30 Sep 2008 21:51:16 +0000
X-Originating-IP: [nn.nn.30.46]
Received: from libertatea.go ([nn.nn.161.160])
by IMTA14.mail.isp.net with isp
id M9qy1a00V3TwUto0E9rELB; Tue, 30 Sep 2008 21:51:15 +0000
X-Authority-Analysis: v=1.0 c=1 a=DZlucjOqAY8A:10 a=mnGO974OAAAA:8
a=9MJFf195B83LjESASTQA:9 a=Lm7NQ261g8eJHgoaELoA:7
a=7Narey355jFQWZRww2lj1r9-lCkA:4 a=8COHQAuY8ZYA:10 a=zEVpGHA-kecA:10
a=37WNUvjkh6kA:10
Received: by libertatea.go id hm1nfa0di0sn for <xxx@myisp.net>; Sun,30 Sep 2018 09:36:35
+0300 (envelope-from <Hometown.Quotes_ary@mousemegadot.com>)
Message-ID: <79864795@mousemegadot.com>
Date: Sun, 30 Sep 2018 09:36:35 +0300
From: "Hometown Quotes" <Hometown.Quotes_ary@mousemegadot.com> …Run Code Online (Sandbox Code Playgroud)