我正在尝试在grails服务中使用g.render,但似乎默认情况下不向服务提供g.有没有办法让模板引擎在服务中呈现视图?我可能会以错误的方式解决这个问题.我想要的是将视图从部分模板呈现为字符串,并将结果字符串作为JSON响应的一部分发回,以便与AJAX更新一起使用.
有什么想法吗?
我们正在尝试使用WebAPI管道在Owin中使用Ninject.我们根据此文档设置了所有内容,但我们无法使InRequestScope()工作.
这是startup.cs的重要部分
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
// Web API routes
config.MapHttpAttributeRoutes();
// Ninject Setup
app.UseNinjectMiddleware(NinjectConfig.CreateKernel);
app.UseNinjectWebApi(config);
}
Run Code Online (Sandbox Code Playgroud)
}
NinjectConfig看起来像这样:
public sealed class NinjectConfig
{
public static IKernel CreateKernel()
{
var kernel = new StandardKernel();
INinjectModule[] modules =
{
new ApplicationModule()
};
instance.Load(modules);
// Do we still need to do this wtih Owin?
instance.Bind<IHttpModule>().To<OnePerRequestHttpModule>();
}
}
Run Code Online (Sandbox Code Playgroud)
我们的ApplicationModule位于一个单独的基础架构项目中,可以访问我们所有不同的层,用于处理DI和映射:
public class ApplicationModule: NinjectModule
{
public override void Load()
{ …Run Code Online (Sandbox Code Playgroud) 我有3个Grails 2.x项目.对于这个例子,它们是:
ProjectCore - A Grails plugin containing all reusable code (domains, taglibs, etc)
ProjectWeb - Front facing web application. Uses ProjectCore
ProjectAdmin - Admin appliction. Uses ProjectCore
Run Code Online (Sandbox Code Playgroud)
几乎所有的图像,js,taglib,服务等都在ProjectCore中,在各个项目中只有app特定的控制器/ views/services/js/css.
使用NetBeans作为我的IDE,一切都在本地运行良好.我对ProjectAdmin项目进行了Warged,并将其部署到运行Tomcat 6的Ubuntu服务器上.应用程序中的所有内容都按预期工作,除了1个图像:avatar.png(包含在ProjectCore应用程序中).
我正在使用g:resource标签来创建所有图像链接,除了这一个图像之外,它们都正确地正确解析到/static/images/some_image_name.png网址.我还验证了图像存在于战争中(位于插件/ ProjectCore /所有其他图像所在的图像).
对于这个特定的图像,如果用户没有为自己上传头像,我正在使用taglib(AvatarTagLib)来创建此图像的链接.此Taglib位于ProjectRoot中,但正在从其他项目中调用.我相信其他图像是从特定项目中的视图调用的,因此这可能是挂断的地方.
最初,当我部署应用程序时,我忘记将war(和包含目录)的所有权更改为tomcat6:tomcat6,因此我不仅遇到了这个图像的问题,而且还遇到了来自SpringSecurityPlugin的messages.properties文件.我将所有内容全部擦除,修复了权限,并解决了除此之外的所有问题.
有没有人遇到过这种行为,或者知道我可以去解决这个问题的任何其他途径?
编辑:我忘了提一件事.当我尝试直接访问图像时,无论是通过http://admin.mydomain.com/images/avatar.png还是http://admin.mydomain.com/static/images/avatar.png,都会返回404.但是,我可以通过这种方式访问其他图像.
编辑2:这不仅限于单个图像.它影响了插件中大约一半的图像.
那个头衔是最糟糕的......
无论如何,我要做的是选择一个包含n个子对象的父对象.我将传递子对象必须匹配的标准列表(1..n).为了简洁起见,这里是我正在使用的课程:
public class Parent {
public int Id { get; set; }
public List<Child> Children { get; set; }
}
public class Child {
public int Id { get; set; }
public int ParentId { get; set; }
public int SomeValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个包含孩子的父母列表,这些孩子与我传入的所有SomeValues相匹配
所以,如果我有:
Parent 1
Child 1, SomeValue 10
Child 2, SomeValue 20
Child 3, SomeValue 40
Parent 2
Child 4, SomeValue 10
Child 5, SomeValue 20
Child 5, SomeValue 50
Run Code Online (Sandbox Code Playgroud)
并且myList是[10,50],它只需要返回Parent 2.如果myList是[10,20],则应返回父母双方.最后,如果myList是[10,20,60],则不应该返回任何内容.
我认为以下内容不起作用,因为子列表中不包含的值将从结果中删除(对吗?) …