当前位置: 首页 > 知识库问答 >
问题:

如何修复注入模型(javax.mvc.Models)未满足的依赖关系?

吕成业
2023-03-14

我在学习MVC1.0教程时遇到了这个错误。

[ERROR]原因:org.jboss.weld.exceptions.deploymentexception:weld-001408:带有限定符的类型模型的依赖关系不满足@default在注入点[BackedAnnotatedField]@inject ch.xxx.controller.usercontroller.Models在ch.xxx.controller.usercontroller.model(usercontroller.java:0)

我试过...

  • 将我的beans.xml放入多个位置(resources/meta-inf/beans.xml webapp/web-inf/beans.xml)
  • 将bean-discovery-mode更改为“all”
  • 用@named和/或@sessionscoped(不在教程中)批注了我的user.class

这是我的user.class

@Entity
@Table(name = "users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String email;
    private String password;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
import javax.ws.rs.FormParam;

public class UserForm {

    @FormParam("id")
    private String id;

    @FormParam("email")
    private String email;

    @FormParam("password")
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
@Controller
@Stateless
@Path("/user")
public class UserController {

    @PersistenceContext
    EntityManager entityManager;

    @Inject
    Models models;

    @GET
    @View("user/all-users.html")
    public void getAllREST(){
        List<User> allUsers = entityManager.createNamedQuery("User.findAll", User.class).getResultList();
        models.put("users", allUsers);
    }

    @GET
    @Path("/create")
    public String getCreateRESTForm(){
        return "user/create-user.html";
    }

    @POST
    @Path("/create")
    public String create(@BeanParam UserForm userForm){
        User user = new User();
        user.setEmail(userForm.getEmail());
        user.setPassword(user.getPassword());

        entityManager.persist(user);

        return "redirect:/user";
    }
}

共有1个答案

濮阳品
2023-03-14

我还没有使用过JEE MVC,但这似乎是CDI相关的问题,不应该放在MVC框架中,因为它应该只使用CDI。

这个异常的原因,正如已经回答的,是因为CDI容器找不到这个接口的任何可注入的实现,因此无法注入它。

看一下javadoc,它说,这个接口的任何实现都需要是可注入的和请求范围的。您确信您期望的实现bean满足了这些要求吗?

src/main/webapp/web-inf/beans.xml(用于WAR)

实现bean是否用@RequestScoped进行了注释?

如果通过EL引用,那么bean是否用@named注释?

 类似资料:
  • 我正在尝试创建一个带有Wildfly和数据库连接的EJB Web项目,以持久化我的类“article”。但当我启动我的应用程序时,我得到了错误 包装服务; ArticleDaoImpl

  • 我看了所有类似的问题,没有一个能帮助我,所以事情是这样的: 为了在不同的程序中重现错误,我创建了一个简单的Spring Boot程序。在尝试运行它时,我遇到了一个我无法解决的非常奇怪的错误: 相关类别: 通用域名格式。实例演示。演示应用程序。爪哇: com.example.demo.configs.RootConfiguration.java 通用域名格式。实例演示。控制器。测试控制器。爪哇: 我

  • 我正在尝试运行Spring boot应用程序,但我收到以下错误: 应用程序运行失败 组织。springframework。豆。工厂UnsatifiedDependencyException:创建名为“returnReasonRepository”的bean时出错,该bean在类路径资源[muscat/configuration/RepositoryConfiguration.class]中定义:通

  • 我的问题与注入EntityManager时的WELD-001408未满足依赖项和WELD-001408未满足依赖项不同。虽然这些问题涉及尝试将托管bean注入到无状态EJB中,但我正尝试进行相反的操作。 当我试图将一个@Stateless@Local interfaced bean注入到一个web托管bean中时,我得到了一个“未满足的依赖项”。我正在用各种EJB模块和web模块构建一个EAR,在

  • java.lang.noClassDefoundError:scala/collection/gentraversableonce$class at kafka.utils.pool.(pool.scala:28)~[kafka2.10-0.8.1.1.jar:na] at kafka.consumer.FetchRequestandResponseStatsRegistry$.~[kafka2.