2012-11-25 88 views
3

我使用條紋框架,我有一個問題,我只是無法解決。條紋忽略提交按鈕事件

我在名爲「add.jsp」的文件夾「生物」中添加了一個頁面,它將一個生物(我模型中的某個實體)添加到數據庫中。我用這種形式在頁面:

add.jsp

<s:layout-render name="/layout.jsp" title="Creatures"> 
<s:layout-component name="menu"> 
    <ul class="navcontainer" id="main-navigation"> 
     <li><s:link href="/regions.jsp">Region</s:link></li> 
     <li class="current"><s:link href="/creatures/show.jsp">Creatures</s:link></li> 
     <li><s:link href="/types.jsp">Creature types</s:link></li> 
     <li><s:link href="/weapons.jsp">Weapons</s:link></li> 
    </ul> 
</s:layout-component> 
<s:layout-component name="main_content"> 
    <div class="main-content"> 
     <div class="content"> 
      <img src="../images/banner.png" alt="Banner" id="banner"/> 
      <h1>Create a new creature</h1> 
      <s:link href="/creatures/show.jsp">Back</s:link> 
      <s:form beanclass="cz.muni.fi.pa165.creatures.web.CreaturesActionBean"> 
       <%@include file="/forms/createCreature.jsp"%> 
       <s:submit name="create" value="Create"/> 
      </s:form> 
     </div> 
    </div> 
</s:layout-component> 

,這樣是相當的話,我還包括表單本身和我有名稱的提交按鈕=「創造」,這應該在動作bean中的「創建」方法上映射對嗎?

好了,所以我有一個類,它看起來像這樣:

@UrlBinding("/creatures/{$event}") 
public class CreaturesActionBean implements ActionBean { 

final static Logger logger = 
    Logger.getLogger(CreaturesActionBean.class.getName()); 

private ActionBeanContext context; 

@SpringBean 
protected CreatureService creatureService; 

@ValidateNestedProperties(value = { 
    @Validate(on = {"create"}, field = "name", required = true, maxlength=256), 
    @Validate(converter=LongTypeConverter.class , on = {"create"}, 
     field = "weight", required = false, minvalue=1, maxvalue=1000), 
    @Validate(converter=LongTypeConverter.class , on = {"create"}, 
     field = "height", required = false, minvalue=1, maxvalue=1000) 
}) 
private CreatureDTO creatureDTO; 

public void setCreatureDTO(CreatureDTO creatureDTO) { 
    this.creatureDTO = creatureDTO; 
} 

public CreatureDTO getCreatureDTO() { 
    return this.creatureDTO; 
} 

public Resolution create() { 
    logger.log(Level.INFO, "add() creature={}", creatureDTO); 
    creatureService.create(creatureDTO); 
    return new RedirectResolution(this.getClass(), "all"); 
} 

@DefaultHandler 
public Resolution all() { 
    logger.log(Level.INFO, "getting all creatures"); 
    return new ForwardResolution("/creatures/show.jsp"); 
} 

因此,這意味着,當有一個與名字提交「創建」,在行動豆執行創建方法和creatureDTO是保存等。

,在行動豆「創造」的方法完全不執行,我正在重定向到被稱爲

http://localhost:8080/pa165/creatures/ 

應用程序上下文的頁面是pa165和重定向到後在我點擊提交按鈕後,我看到該目錄中所有文件的列表(add.jsp等等,生物目錄中的所有文件),並且方法根本沒有被執行,所有文件都是

我希望被重定向到頁面的生物/ show.jsp我通過線

return new RedirectResolution(this.getClass(), "all"); 

處理,這意味着我將throught有

所有的方法被重定向爲什麼不起作用?

回答

2

您是否在任何地方輸出驗證結果? (< stripes:errors > tag)根本沒有執行'create'方法可能表明表單提交不通過驗證。也許一個字段名稱不匹配或類似的東西。

1

你的問題是URL綁定不應該與文件夾結構相同。只需更改像@UrlBinding("/mycreatures/{$event}")之類的綁定即可。我有同樣的問題,這就像一個魅力。有關更多信息,請參見this link