줄무늬 프레임 워크를 사용하고 있으며 해결할 수없는 문제가 있습니다.줄무늬 제출 단추 이벤트를 무시합니다.
"생물"(내 모델의 일부 엔티티)을 DB에 추가하는 "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>
그래서 그게 꽤있다, 나는 또한 그 자체를 형성 포함
add.jsp 나는 이름의 제출 버튼이있는 액션 빈에서 메소드 "create"를 매핑해야합니까?
좋아 I은 다음과 같습니다 클래스가 있도록 :
@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과로 리디렉션 후 그 페이지에서 submit 버튼을 클릭하면 그 디렉토리에있는 모든 파일들의리스트 (add.jsp와 그 안에, creature dir의 모든 파일들)가 보이고, 메쏘드가 전혀 실행되지 않습니다..
나는 그것이 작동하지 않는 이유는이모든 방법 throught를 리디렉션되는 것을 의미합니다 I 라인
return new RedirectResolution(this.getClass(), "all");
에 의해 처리 페이지 생물/show.jsp로 리디렉션 할
?