Действия Грааля вызываются дважды. Помогите! - PullRequest
2 голосов
/ 18 сентября 2010

Я пишу приложение Grails и сталкиваюсь со странной проблемой.При нажатии кнопки «Отправить» на странице соответствующее действие вызывается дважды подряд.Это заставляет все ужасно сломаться.Кто-нибудь еще видел эту проблему раньше?Ниже мой код:

со страницы GSP:

<g:form method="post" action="show">
<h2>All items since...</h2>
<g:datePicker name="startDate" precision="day" value="${new Date()}"  /><br/>
<h2>Format</h2>
<g:radio name="feedType" value="RSS1" checked="true"/><span>RSS 1.0</span>
<g:radio name="feedType" value="RSS2"/><span>RSS 2.0</span>
<g:radio name="feedType" value="ATOM"/><span>Atom</span><br/>
<hr />
<h2>Topics</h2>
<g:each in="${list}" var="subscription" status="i">
  <g:if test="${i == 0}">
    <g:radio name="nodeID" value="subscription.name" checked="true"/><span>${subscription.getPrettyName()}</span><br/>
  </g:if>
  <g:else>
    <g:radio name="nodeID" value="${subscription.name}"/><span>${subscription.getPrettyName()}</span><br/>
  </g:else>
</g:each>
<hr/>
<g:submitButton name="getFeedButton" value="Get Feed!" />

с контроллера:

def show = {
    def nodeID = params.nodeID
    def feedType
    if(params.feedType.equals("RSS1")){
        feedType = FeedType.RSS1;
    } else if(params.feedType.equals("RSS2")){
        feedType = FeedType.RSS2;
    } else{
        feedType = FeedType.ATOM;
    }
    def date = params.startDate
    println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
    println(date)
    println("Time "+System.currentTimeMillis());
    println("****************************")
    def feed = XMPPListenerService.getFeed(date, feedType, nodeID)
    response.contentType = "text/xml"
    response.outputStream << feed;
}

Выход:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!Сб 17 сентября 00:00:00 ПО ВОСТОЧНОМУ ВРЕМЕНИ 1994Время 1284757543744****************************!!!!!!!!!!!!!!!!!!!!!!!!!!!!нольВремя 1284757544091****************************2010-09-17 17: 05: 44,100 [http-8080-2] Ошибки ОШИБКИ. GrailsExceptionResolver - nulljava.lang.NullPointerException

Вы можете видеть, что действие вызывается дважды через несколько миллисекунд после первого вызова.Сбой системы, потому что во время второго вызова объект date имеет значение null.Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 23 сентября 2010

Вы уже решили это? Вы пытались изменить действие с шоу на сохранение?

<g:form method="post" action="save">

вместо

<g:form method="post" action="show">

и название метода как сохранить. Очень странно видеть действие «Показать» в методе post. Может быть, Grails делает что-то за сценой, потому что Grails делает так много вещей, основанных на соглашении, о которых вы даже не подозреваете !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...