gpt4 book ai didi

javascript - Play2 和 Scala - 我的 JS 文件中的静态文件和 I18 消息

转载 作者:行者123 更新时间:2023-11-28 09:17:25 25 4
gpt4 key购买 nike

在我的网络应用程序中发布表单时,我会在后端验证表单之前在 JavaScript 中执行一些检查。 js 验证依赖于 I18 消息和图像。如果这是一个 scala 模板,我当然会使用 @Messages@routes.Assets.at 但我不想混合这两者(scala 模板和 .js文件)。

例如,我在 js 文件中进行了此检查,当前图像路由是硬编码的:

$("form input[type=submit]").click(function (e) {

e.preventDefault();
var email = $("#username");
var emailPattern = /^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;

if (email.val() == "") {
email.css("background-image", "url('/assets/images/general/input-row-red.jpg')");
return e.preventDefault();
} else {
email.css("background-image", "url(/images/general/inputTextBg.png)");
}
});

我尝试用他们需要的消息准备js文件,如下所示:

.js 文件:

/* Prepare messages*/
var messages = "";

$.getJSON("/messages/source", {
"keys": "sms.form.login.hide,sms.form.login"},
function (data) {
messages = data.messages;
});

消息源 Controller :

object MessageSource extends Controller {

def getMessages(keys : String) = Action { request =>
if(keys.isEmpty) {
BadRequest(Json.obj("status" -> "KO", "message" -> "key plix!"))
}
else {
var js = Map.empty[String, String]
for (k <- keys.split(",")) {
js = js + (k -> Messages(k))
}
Ok(Json.obj("status" -> "OK", "messages" -> js))
}
}
}

但我不认为这是最好的解决方案。我查看了 http://www.playframework.com/documentation/2.1.0/ScalaRouting 但我无法弄清楚。也许你有一些好的解决方案给我?

最佳答案

也许是这样?

js文件:

@scripts = {
<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>
<script type="text/javascript">
jsRoutes.controllers.Application.messages("admin.venue.1,admin.venue.2,admin.venue.3" ).ajax({
type: 'GET',
success: function (data) {
console.log(data.messages);

},
error: function () {
console.log("error");
}
});
</script>
}

Controller :

object Application extends Controller {

def javascriptRoutes = Action {
implicit request =>
import routes.javascript._
Ok(
Routes.javascriptRouter("jsRoutes")
(
routes.javascript.Application.messages
)
).as("text/javascript")


}

def messages(keys : String) = Action {
implicit request => {
val messages = keys.split(",").map { key =>
key -> Messages(key)
}.toMap

Ok(Json.obj("status" -> "OK", "messages" -> messages))
}
}

}

路线:

# Javascript routes
GET /javascriptRoutes controllers.Application.javascriptRoutes
GET /messages controllers.Application.messages(keys: String)

关于javascript - Play2 和 Scala - 我的 JS 文件中的静态文件和 I18 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com