2011-05-17 13 views
6

Struts.xml içinde joker yöntem çağırma yöntemini nasıl kullanacağımı biliyorum, ancak bunu ek açıklamalarla yapmak mümkün müdür? Öyleyse nasıl?Sadece ek açıklamaları kullanarak Struts2'de joker eklenti kullanarak sözleşmeler eklentisi kullanmak mümkün mü?

+0

Ek açıklamalarla yapmak istediğiniz bir struts.xml eşlemesi örneği verebilir misiniz? –

+0

Baktığımdan bu yana o kadar uzun zaman oldu ... "*" ile ilgili herhangi bir şeyle eşleşiyorsa, başka bir desenle eşleşmiyorsa bir hata sayfasına yönlendirebilirim. Sözleşmeler eklentisini kullanıyorum. – Quaternion

cevap

8

Muhtemelen şimdi çözdünüz mü, ama cevap arayanlar için evet, bu mümkün. http://struts.apache.org/2.3.1.2/docs/wildcard-mappings.html

, url params okumak bununla yönteminizi açıklama için::

joker Haritalama için bakınız

private String id; 

@Action(value = "edit/{id}", 
     results={@Result(name = "success", location = "/WEB-INF/views/devices/edit.ftl")} 
)   
public String edit() { 
    // do something 
    return SUCCESS; 
} 

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

public String getId() { 
    return id; 
} 
  • Sen id parametresi için alıcı/ayarlayıcı gerekecektir.
  • struts2, url için başarı için ne kullanacağını bilmeyeceği için sonuçları belirtmeniz gerekir: ... edit/123, dolayısıyla dosyanıza işaret etmek için @Result kullanma gereksinimi. Kinda, buradaki kongre eklentisinin amacını ortadan kaldırıyor.

    @Action(value = "index", 
         results={@Result(name = "success", location = "/devices/edit/${entityId}", type = "redirect")} 
        ) 
    

    Sen (benim durumumda Dize), bir alıcı/ENTITYID için ayarlayıcı gerekir: Ben, belirli bir url yönlendirme Bu ek açıklamanın kullanmak istediğiniz durumda

.

Ayrıca wilcard eşleştirmesini, ad joker eşleme gelişmiş olabilir

...

struts.xml değiştirebilir ve aşağıdaki sabitleri eklemeyi unutmayın.

<!-- Used for advanced wilcard mapping --> 
<constant name="struts.enable.SlashesInActionNames" value="true"/> 
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/> 
<constant name="struts.patternMatcher" value="regex" /> 
İlgili konular