当前位置: 首页 > 面试题库 >

使用Facelets在Java Server Faces中创建“编辑我的项目”页面

姬旭
2023-03-14
问题内容

假设您具有以下Facelet(使用Facelets 1.1.12):

edit_item.xhtml which i access with edit_item.jsf

现在我有另一个页面,将我发送到带有URI的GET参数参数的edit_item.jsf:
http://mysite.com/edit_item.jsf?ID=200

您如何访问Bean并获取信息,并使用JSF和Facelets在请求页面上显示此信息?页面加载时是否可以运行Bean?


问题答案:

您可以使用faces-config.xml配置从param地图注入ID 。

对于这个简单的bean:

public class BeanWithId implements Serializable {
  private String id;
  private String info;

  private void populateInfo() {
    info = "Some info from data source for id=" + id;
  }

  public String getId() { return id; }

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

  public String getInfo() { return info; }
  public void setInfo(String info) { this.info = info; }

  public String save() {
    System.out.println("Saving changes to persistence store");
    return null; // no navigation
  }
}

您可以使用以下定义注入ID:

  <managed-bean>
    <managed-bean-name>beanWithId</managed-bean-name>
    <managed-bean-class>datasource.BeanWithId</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
      <property-name>id</property-name>
      <property-class>java.lang.String</property-class>
      <value>#{param.ID}</value>
    </managed-property>
  </managed-bean>

小平面形式:

<h:form>
  <p>ID: <h:outputText value="#{beanWithId.id}" /></p>
  <p>Info: <h:inputText value="#{beanWithId.info}" /></p>
  <p><h:commandLink action="#{beanWithId.save}" value="Save">
    <f:param name="ID" value="#{param.ID}" />
  </h:commandLink></p>
</h:form>

这不是唯一的方法(例如,您可以直接使用来查找ID FacesContext)。



 类似资料:
  • 问题内容: 我想在我的Gerrit项目中添加一个“已验证”标签,以允许Jenkins验证代码是否已构建并通过其测试等。 我知道我需要添加以下部分: 但是,如何获取该文件进行编辑? 问题答案: 项目设置保存在项目的Git存储库中。您可以通过从Gerrit克隆项目,进行更改,提交并推回Gerrit来对其进行编辑。 您可以对任何项目执行此操作,但是,如果您希望所有项目都可以继承它,则可以将其用作项目。

  • 我有一个通过ItemsSource属性绑定到ListView的可观察集合。我使用GridView来显示ListView中的项。通过将我的ViewModel中的“IsServiceMode”属性设置为“true”(DataContext为包含ListView的UserControl),我希望将GridViewColumn更改为使用TextBox而不是TextBlock。我将CellTemplates

  • 1.6. 使用grunt创建项目 grunt是基于任务的构建工具,和make,rake,ant,cake,maven,gradle等是一样的 1.6.1. 前置条件 前置条件需要有nodejs和npm,请确保已安装成功: npm install -g grunt npm install -g grunt-init git clone https://github.com/gruntjs/grunt

  • 我已经尝试过使用GCP控制台仪表板创建项目,我想通过使用Google支持的API来管理项目,以编程方式创建项目。然后我想通过使用.NET项目的Big Query客户端库来执行Google Big Query操作。 有没有办法通过使用谷歌云API服务来创建谷歌云平台“项目”?

  • 创建任何新的 Android 项目后,Eclipse 会自动创建一个“appcompat_v7”项目,而 /src 下没有任何文件。我不知道Eclipse是如何或为什么创建这个项目的。我也得到了一个奇怪的错误。 正如你看到的AndroidManifest。项目中存在xml! EDIT1:清理项目后,奇怪的错误消失了,但我仍然想知道为什么创建appcompat_v7。 EDIT2:我还注意到Ecli