小编Max*_*Max的帖子

重定向到在MVC4中中断了哈希标记(#)的原始URL

我正在使用AngularJS开发一个SPA应用程序,使用REST Web API,在一个非常小的ASP.NET MVC4层上.由于这里不重要的原因,我没有使用MVC4的默认帐户控制器.

基本上,我想在用户之间分享"任务".我的目标是能够通过电子邮件将特定"任务"实体的URL发送给任何用户.单击该URL应启动身份验证.身份验证成功后,我想显示真实的任务页面信息.

AngularJS使我的URL有#符号,或者显示任务"XYZ123"的页面的URL是:http://hostname.com/#/tasks/XYZ123

ASP.NET将对该URL的未授权访问重定向到:http: //hostname.com/Home/Login?ReturnUrl =%2f#/tasks/XYZ123

这没关系,但相关的控制器方法"切断"#的路径,所以在:

 public ActionResult Login(string returnUrl)
Run Code Online (Sandbox Code Playgroud)

'returnUrl'的值只是"/"

所以,我正在失去这条道路:我想建立一个具有原始网址的"Connect with Facebook"链接,例如:

http://hostname.com/Login/ExternalLogin?ReturnUrl=%2F#/tasks/XYZ123

但是我不能.

解决这个问题的正确方法是什么?

我可以考虑在没有#tag的情况下创建自己的重定向服务URL,但是这个解决方案意味着额外的工作,并且仅涵盖系统发送带有任务URL的消息的情况 - 人们仍然会尝试从中复制/粘贴位置URL浏览器.

谢谢你的任何提示.

马克斯

authentication asp.net-mvc-4 single-page-application

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

如何处理Play Framework模型中的"计算"字段

在Play Framework中定义的"最佳实践"是什么?具有一些"计算"字段的对象,而不是直接映射到与实体相关的任何字段?

例如,我想为具有"定价"和"实际价格"的"产品"定义模型.

就DB而言,"列表价格"直接映射到模型类中的"int listPrice".然而,"实际价格"是使用与"产品"本身无关的附加数据(例如,一般商店折扣,部门特定折扣等 - 涉及的一些"商业逻辑")从"定价"计算的.

由于我的应用程序需要公开REST API(不只是一个web应用程序) - 我真的希望延长"产品"类,以支持"计算"领域,使双方"MyProduct.listPrice"和"MyProduct.finalPrice"将得到支持.

是否可以将"瞬态"成员添加到模型类中?如果没有,应该定义一个从模型派生的类,并使用它?

谢谢你的任何提示.

马克斯

jpa model playframework

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

Play Framework验证:如何使用参数覆盖验证器的验证消息?

我试图为Controller方法中调用的参数添加"自定义"验证消息,每个特定方法(不在全局消息列表中)

我在一个简单的例子中找到了如何做到这一点,比如:

@Required(message ="error.shouldspecifyname")字符串用户名

我想知道我是否可以使用带参数的验证器做类似的技巧.

所以,我想转换

@Equals("passwordRepeat")字符串密码

喜欢的东西

@Equals("passwordRepeat",message ="error.passwordsshouldmatch")

什么是正确的语法?

提前致谢.

validation playframework

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

如何在JPQL中执行复杂的LEFT JOIN条件?

我正在使用JPQL来进行Play Framework的模型查询.

我想知道JPQL是否支持LEFT JOIN的"复杂"ON条件.

在我的例子中,有2个表:

  • '应用' - 应用程序列表
  • 'AggregationHistory' - 每个应用程序的聚合记录列表,每个日期.在模型中,它具有'app'字段,表示与'App'的多对一(物理表中的列名'app_id')

假设我想计算没有特定日期记录的所有应用程序的列表.

在纯SQL中,我使用以下查询获得结果:

SELECT a.* FROM app a LEFT JOIN aggregationhistory ah 
ON a.id = ah.app_id AND ah.fromDate =  '2012-03-14 00:00:00' 
WHERE ah.fromDate is NULL
Run Code Online (Sandbox Code Playgroud)

当然,"开启"状态下的"和"是必不可少的.

现在,我看到的所有JPQL示例都是:

SELECT a.* FROM AggregationHistory ah  LEFT JOIN ah.app a WHERE ...
Run Code Online (Sandbox Code Playgroud)

那么,唯一支持的"ON"条件是ID的"匹配"?(似乎对我帮助不大)

我可以想到解决方法(比如,使用"本机查询",或使用JOIN来获取记录的应用程序列表,并进行比较).但我想知道我在SQL中进行的查询是否可以转换为JPQL.

谢谢

left-join jpql playframework

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