【问题标题】:Tapestry 5.4 URL rewriting and SEO URLsTapestry 5.4 URL 重写和 SEO URL
【发布时间】:2014-11-11 16:07:18
【问题描述】:

我正在用 Tapestry 编写一个 Web 应用程序。 在我的应用程序中,我想使用友好的网址。现在我可以像这样呈现 url 页面:

http://localhost:8080/page/page-name

我想要做的是呈现这样的 URL:

http://localhost:8080/page-name

所有页面都存储在 Postgresql 数据库中。 我目前正在使用 Tapestry 5.4-beta16,并且我已经阅读了 Tapestry 文档:

http://tapestry.apache.org/url-rewriting.html

http://blog.tapestry5.de/index.php/2010/09/06/new-url-rewriting-api/

现在,这是列出存储在数据库中的所有页面的类(仅用于测试)

public class Pages {

  @Inject
  private Session session;

  @Property
  List<it.garuti.tapestrycms.entities.Pagine> pagine;

  @Property
  private it.garuti.tapestrycms.entities.Pagine pagina;


  void setupRender() {

      pagine = session.createCriteria(it.garuti.tapestrycms.entities.Pagine.class).list();

  }

}

这是显示页面内容的类:

public class Page {

@Property
private Page page;

@Inject
private Logger logger;

@Inject
private Session session;

@Inject
Request request;


@InjectPage
Index index;

@Property
private String slug;



 void onActivate(String slug) {

    this.slug = slug;

}

Object onActivate() {
    if (session.createCriteria(Pagine.class)
            .add(Restrictions.eq("slug", slug)).uniqueResult() == null)
        return     new HttpError(404, "Resource not found");
    return null;
}

String onPassivate() {
    return slug;
}

void setupRender() {
    page = (Pages) session.createCriteria(Pages.class)
            .add(Restrictions.eq("slug", slug)).uniqueResult();

}
}

最后是页面实体:

@Entity

@Table(name = "pages", schema = "public")
public class Pages implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pagine_seq")
@SequenceGenerator( name= "pagine_seq", sequenceName = "pagine_id_seq")
@Column(name = "id", unique = true, nullable = false)
private long id;

@Column(name = "titolo", nullable = false, length = 60, unique = true)
private String titolo;

@Column(name = "slug", nullable = false, length = 60, unique = true)
private String slug;

@Column(name = "contenuto", nullable = false, columnDefinition = "TEXT")
private String contenuto;

@Column(name = "data_creazione", nullable = false)
private Date dataCreazione;

@Column(name = "data_modifica")
private Date dataModifica;

@Column(name = "stato", nullable = false)
private String stato;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "utente_id", nullable = false)
private Users user;

getter and setter...
....
}

坦克你 洛伦佐

【问题讨论】:

    标签: url-rewriting seo tapestry friendly-url


    【解决方案1】:

    在 Tapestry 中有一种特殊情况,当您的页面类的名称为 Index 时,它不会在 URL 中包含页面名称。因此,如果您将类 Page 重命名为 Index,我认为您将实现您想要的,而无需任何明确的 url 重写

    【讨论】:

    • 感谢 Lance,这是所有简单的解决方案,而且效果很好
    猜你喜欢
    • 2013-04-18
    • 2012-07-17
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多