SORU
14 Aralık 2010, Salı


Geçiş AKSARAY 2.0 OLUMSUZLUK 1.2

Oldukça geniş bir uygulama yazılmış çalışıyorumAKSARAY 1.2. AKSARAY 1.2 civarında 6 yaşında şimdi. 2.0 OLUMSUZLUK yükseltmek istiyorum. Bunun ne kadar acı verici olacak? Özel etiketleri bazı özellikler vb değiştirilmiş olduğunu fark ettim.

CEVAP
26 Aralık 2010, Pazar


Acı

2.0 için OLUMSUZLUK 1.2 yükseltme acı şu anda kullandığınız ve kullanmak istediğiniz görünümü teknolojiye bağlıdır.

  • JSP 2.JSP 2 x.x = Neredeyse hiç çaba harcamadan.
  • Facelets 1.x 2.0 = Az çaba Facelets.
  • JSP 2.Facelets x 2.0 = çaba Çok. Eğer siz de özel bileşenler varsa bu çift.

Temel değişiklikler

Görünüm teknoloji anahtarı ne olursa olsunen azındanaşağıdaki adımlar yapılmalıdır:

  • /WEB-INF/lib AKSARAY 1.2 KAVANOZ (varsa) kaldırın.
  • Bırak AKSARAY 2.0 KAVANOZ /WEB-INF/lib (eğer OLUMSUZLUK 1.2 oldu servletcontainer tarafından sağlanan, istersin değiştirmek için classloading politikası yük web-kütüphaneler ilk önce servletcontainer kütüphaneler, Ayrıca bakınız JSF2 classloading issues in application servers).
  • Güncelleme faces-config.xml ilanı AKSARAY 2.0 spec uygun kök.

    <faces-config
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
        version="2.0">
    
  • web.xml kök Bildirgesi, uygun emin olunen azındanSunucu uygulaması 2.5. AKSARAY 2.0 2.4 veya daha düşük (although it's hackable) çalışmaz.

    <web-app 
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        id="YourWebappID"
        version="2.5">
    

JSP 2.JSP 2 x.x

KullanıyorsanızJSP 2.xve isterdevam etbunu kullanarak, temelde başka bir şey değiştirmek gerekmez.

Yavaş yavaş yükseltiliyor

Eğer sen zaten bir sonek kullanarak url-pattern FacesServlet gibi *.jsf, o zaman iyi bilen FacesServlet ilk tarama için *.xhtml dosya ve eğer yoksa, o zaman tarama için *.jsp dosya. Bu oda yavaş yavaş URL değiştirmeden perde arkasında Facelets için JSP dönüştürmek sağlar.

Ama kullanıyorsanız bir önek url-pattern gibi /faces/* ve yavaş yavaş yükseltme JSP için Facelets, o zaman gerçekten onu değiştirmek için *.jsf ve belki de tüm bağlantılar mevcut JSP sayfaları.

Sadece yeni AKSARAY 2.0 sağlanan örtülü gezinti dosyanın varlığı için tarama değil, outcome.xhtml zaten gidecek akılda tutmak gerekir. Eğer veya *.jsp, gitmek istiyorsanız, o zaman hala viewıd, AKSARAY 1 eklemek gerekir.x yol.


Facelets 1.Facelets x 2.0

KullanıyorsanızFacelets 1.xteknoloji görünüm ve 2.0 sağlanan AKSARAY kullanmak istiyorumFacelets 2.0o zaman ihtiyacınız olan aşağıdaki ek adımları yapmak için:

  • Facelets 1 Çıkarın.x /WEB-INF/lib JAR.
  • Facelets 1 Çıkarın.x 33* *faces-config.xml.
  • FaceletViewHandler herhangi bir özel uygulama ViewHandlerWrapper yerine genişletmek için güncelleştirilmesi gerekiyor.
  • Gerekli değil, ama temizlik için, herhangi bir Facelets 1 çıkarın.x ilgili <context-param> zaten Facelets varsayılan olan web.xml değerleri *.xhtml değer javax.faces.DEFAULT_SUFFIX gibi 2.0,.
  • Mevcut Facelet taglib XML kök güncelleştirme bildirimi 2.0 Facelets uygun.

    <facelet-taglib 
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
        version="2.0">
    

Bu temelde olmalıdır.


JSP 2.Facelets x 2.0

KullanıyorsanızJSP 2.xteknoloji görünüm ve yükseltmek istiyorumFacelets 2.0hemen sonra site yayımlanmadan önce bir çok değişiklik yapmak gerekir. Temelde burada görünüm teknoloji değiştiriyorsun.

Ana Sayfa değiştirir

Her ana sayfasında, aşağıdaki temel JSP şablon.. değiştirmek gerekir

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html>
<f:view>
    <html lang="en">
        <head>
            <title>JSP page</title>
        </head>
        <body>
            <h:outputText value="JSF components here." />
        </body>
    </html>
</f:view>

aşağıdaki temel Facelets için ..şablon:

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <title>XHTML page</title>
    </h:head>
    <h:body>
        <h:outputText value="JSF components here." />
    </h:body>  
</html>

Sayfa değişiklikleri vardır

Eğer mevcut JSP sayfaları iyi tasarlanmış ise, herhangi bir hat olmamalıdırkomut dosyası uygulamacığıkod ve siz de JSP özel tek olarak <jsp:include> sadece etiketi var. Bunlardan herhangi birinden değiştirilmesi gerekir:

<jsp:include page="include.jsp" />

için

<ui:include src="include.xhtml" />

Temel JSP.. sayfa şablonu vardır

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:subview id="include">
    <h:outputText value="JSF components here." />
</f:subview>

..sayfa şablonu vardır aşağıdaki temel Facelets şekilde değiştirilmelidir:

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:outputText value="JSF components here." />
</ui:composition>

Özel bileşeni değiştirir

Mojarra Migration Guide bu açıklandığı gibi Facelets KARŞILIK dosyalarını JSP kullanan programlardır dosyaları değiştirmeniz gerekir.


Sonrasında

Göç yaklaşımı ne olursa olsun, yavaş yavaş 82 ** yeni AKSARAY 2.0 ek açıklamalar ile faces-config.xml. <managed-bean> @ManagedBean açıklamalı olabilir:

@ManagedBean(name="managedBeanName")
@RequestScoped
public class SomeBean {}

* *84, yanında da @ViewScoped, @SessionScoped ve @ApplicationScoped vardır. @ManagedBean name özniteliği atlarsanız, varsayılan 1 char lowercased ile code.

@ManagedBean
@RequestScoped
public class SomeBean {}

Bu örnekte, #{someBean} olacak.

<managed-property> @ManagedProperty kullanarak açıklamalı olabilir:

@ManagedProperty("#{otherBean}")
private OtherBean otherBean;

<validator> açıklamalı @FacesValidator kullanarak herhangi bir:

@FacesValidator("someValidator")
public class SomeValidator implements Validator {}

<converter> açıklamalı @FacesConverter kullanılarak yapılabilir

@FacesConverter("someConverter")
public class SomeConverter implements Converter {}

<renderer> açıklamalı @FacesRenderer kullanılarak yapılabilir

@FacesRenderer(componentFamily="someComponentFamily", rendererType="someRendererType")
public class SomeRenderer extends Renderer {}

<from-outcome> <to-view-id> de bu implicitly olacağından kaldırılabilir olarak XHTML sayfasının dosya adını kullanan <navigation-case> bunu yapmış. Bu yavaş yavaş tüm sonuç değerleri hedef görünümü adını eşleşecek şekilde değiştirerek yapılabilir.

Son olarak, herhangi bir oturum kapsamlı fasulye hangi büyüyü oturumu ile tek nedeni korur fasulye veri sonraki istekleri aynı sekme/pencere daha belirgin @ViewScoped, çünkü bu şekilde fasulye olmayacak etkilenen zaman son kullanıcıya açılıyor aynı sayfa içinde farklı sekmeler/windows.


Bileşen kütüphaneleri

Not bunu kabul etmiyorum herhangi bir 3. parti componant kütüphaneler gibi PrimeFaces/RichFaces/İceFaces içine hesabında bu cevap, daha sonra olması imkansız yazmak için bir güvenilir cevap beri bu temelde aşağı kaynar için "duruma göre değişir". Sadece bir bileşen kitaplığı yükseltmek için yeterli genel olarak-kendilerini doğrulanmış - 2.0 OLUMSUZLUK onların talimatına uygun olarak uyumlu bir sürümü. En iyisi sadece birim testleri yazmak, ve yükseltmeden önce ve sonra onları çalıştırmak ve herhangi bir sorunları tek tek gidermek için.

Burada belirli bir bileşen kitaplığı göç konusunda en azından bazı yararlı linkler:

PrimeFaces PrimeFaces 1 için geçiş Rehberi Var.2-x.x 1 PrimeFaces.x Facelets 1 gerektirir.x zaten, o yüzden sadece 1 Facelets takip etmek zorunda.2-x.x adım geçiş. Ancak, bir şey de PrimeFaces PrimeFaces 1 geçiş üzerinde geçerli olabilecek 2.x to 3.x migration guide.3 x.x. Tomahawk da hiçbir geçiş Rehberi Var. Temelde küplerin değiştirmek için gereken ve gerekirse tek bir isteği bean bean görünüm kapsamı yaparak kapsamlı <t:saveState> tüm başvurular kurtulmak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • mipd1980

    mipd1980

    25 EKİM 2006
  • monkophile

    monkophile

    25 Temmuz 2007
  • steven johns

    steven johns

    11 Mart 2011