抱歉,我只是从所有这些 EJB、JSF 和 JAX-RS 的东西开始,现在需要你的帮助。我创建了一个 JAX-RS Resource 类,它工作得很好并且实现了@GET、@PUT 等方法。
在同一个项目中,我现在使用相应的 BackBean 创建了一个 JSF 页面。这个 Backbean 应该与 REST 接口对话。在测试时,我将 REST 接口的 URI 硬编码到 bean 中,但我当然希望以编程方式获取 URI。我尝试使用 @Produces 方法和注入,但总是得到 IllegalStateException。我认为这与上下文有关,但我实际上没有解决它的理解。
我的 REST 资源:
@Path("task")
@ManagedBean
@RequestScoped
public class TaskResource {
@Context
private UriInfo context;
@Inject TaskLifecycle lc;
public TaskResource() {
}
@GET
@Path("{id}")
public Response getTask(@PathParam("id") String id) { ... etc.
我的豆豆:
@ApplicationScoped
@LocalBean
@Named("tmmlWrapper")
public class TmmlTaskWrapperBean implements Serializable {
// Here another ManagedBean is injected, which works fine!
@Inject TaskLifecycle lc;
最后是我的 JSF 页面:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Tasklist</title>
</h:head>
<h:body>
<h:form>
<h:outputLabel ><h3>Tasklist:</h3></h:outputLabel>
<h:dataTable value="#{tmmlWrapper.taskList}" var="tl">
<h:column>
<f:facet name="header">ID</f:facet>
#{tl.id}
</h:column> ... and so on ... etc.
我的问题:我的 BackBean 如何获取 REST 资源的 URI(例如“http://exampledomain:8080/as”)?欢迎任何帮助!
干杯,乔恩