小编Rya*_*lva的帖子

无法让Jetty扫描带注释的类

我有一个嵌入式jetty服务器的应用程序,我就是这样开始的(放在main()中并使用eclipse启动):

Server server = new Server(port);

WebAppContext context = new WebAppContext();
context.setResourceBase("web/");
context.setDescriptor("web/WEB-INF/web.xml");
context.setConfigurations(new Configuration[]{
            new AnnotationConfiguration(), new WebXmlConfiguration(),
            new WebInfConfiguration(), new TagLibConfiguration(),
            new PlusConfiguration(), new MetaInfConfiguration(),
            new FragmentConfiguration(), new EnvConfiguration()});

context.setContextPath("/");
context.setParentLoaderPriority(true);
server.setHandler(context);
server.start();
server.join();
Run Code Online (Sandbox Code Playgroud)

我的web.xml看起来像这样(现在是空的,我不确定我是否可以完全删除它):

<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    metadata-complete="false"
    version="3.0">
</web-app>
Run Code Online (Sandbox Code Playgroud)

我有一个简单的类设置如下:

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns={"/test"})
public class TestServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException  {
        request.getRequestDispatcher("/WEB-INF/html/index.html").forward(request,response);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在web.xml中使用传统的servlet映射时,我的应用程序工作正常.但是当我删除web.xml映射并使用注释时,我只能获得404.看起来它根本不是在扫描注释.控制台看起来像这样:

2012-08-01 …
Run Code Online (Sandbox Code Playgroud)

annotations jetty embedded-jetty

18
推荐指数
3
解决办法
1万
查看次数

你可以阻止Angular组件的主机点击发射吗?

我正在创建一个Angular组件,它包含一个<button>带有一些附加功能的本机元素.如果它们被禁用并且我想要复制相同的功能,则按钮不会触发单击事件.即给定:

<my-button (click)="onClick()" [isDisabled]="true">Save</my-button>
Run Code Online (Sandbox Code Playgroud)

有没有办法my-button防止onClick()被叫?

在Angular中,您可以通过这种方式监听主机点击事件,并停止传播事件:

//Inside my-button component
@HostListener('click', ['$event'])
onHostClick(event: MouseEvent) {
  event.stopPropagation();
}
Run Code Online (Sandbox Code Playgroud)

这可以防止事件冒泡到祖先元素,但它不会阻止内置(click)输出在同一主机元素上触发.

有没有办法实现这个目标?


编辑1:我现在解决这个问题的方法是使用一个名为"onClick"的不同输出,消费者必须知道使用"onClick"而不是"click".这不是理想的.

编辑2:<button>成功停止源自元素的单击事件.但是如果你像我一样将元素放在按钮标记内,那么单击这些目标上的事件会传播到主机.嗯,应该可以将按钮包裹在另一个停止传播的元素中......

javascript angular-template angular

13
推荐指数
1
解决办法
8115
查看次数

Hibernate/JPA:获取 OneToMany 关系的一个(第一个)元素

我有一个 OneToMany 关系,假设ListGroup拥有很多ListItems。我定义了 OneToMany 字段并且它有效,但我并不总是想获取所有 s ListItem。我想要一个名为 的附加字段latestItem。在 Hibernate 中,当您访问 oneToMany 集合中的一个元素时,它会获取所有这些元素,这就是我想要这一附加映射的原因。如果项目很多,则以下方法效率较低:

public ListItem getFirstItem() {
    return listItems.get(0);
}
Run Code Online (Sandbox Code Playgroud)

我试图建立一个公式。如果我想获取相关字段的单列,公式似乎可以工作,如下所示:

@Formula("(select A.description from LIST_ITEM A where A.list_group_id=id and A.id=(select max(B.id) from LIST_ITEM B where B.list_group_id=id))")
public String getLatestListItemDescription() { ... }
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试选择要放入 bean 中的整行,则会失败:

@Formula("(select A.* from LIST_ITEM A where A.list_group_id=id and A.id=(select max(B.id) from LIST_ITEM B where B.list_group_id=id))")
public ListItem getLatestListItem() { ... }

Caused by: org.hibernate.MappingException: Could not determine type for: …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

5
推荐指数
1
解决办法
1956
查看次数

为什么 Zone.js 改变 AngularJS 评估属性的方式?

我有一个同时包含 Angular (2+) 和 AngularJS (1.x) 的应用程序。我们正在使用第三方 AngularJS 库,该库在链接函数中从其 attrs 数组中读取对象,如下所示:

//3rd party lib code:
module.directive('test', () => ({
  template: `Look at the console`,
  link(elt, scope, attrs) {
    console.log('link attrs.props', attrs.props);
  }
})) 
Run Code Online (Sandbox Code Playgroud)

模板:

<!-- someObject = {name: 'foo'} -->
<test props="{{someObject}}"></test>
Run Code Online (Sandbox Code Playgroud)

我们刚刚升级到最新版本的 AngularJS,并注意到一个问题。通常,attrs.props 计算结果为对象的字符串表示形式。我们得到的不是字符串化对象,而是“[object Object]”

我尝试了最小化复制,但无法重现问题,直到我尝试导入 Zone.js,如您在此 stackblitz 上看到的: https ://stackblitz.com/edit/angularjs-attrs-test?file=app.js

如果导入了 Zone.js(Angular 2+ 需要它),那么attrs.props就是"[object Object]"。没有它,attrs.props就是{name: 'foo'}

这是一个已知的问题?有解决方法吗?

angularjs zone.js angular angular-hybrid

5
推荐指数
1
解决办法
1019
查看次数