입력이 클라이언트 측에 있고 믹스에서 Confirm을 누른 후에 onSuccess
함수가 호출되기 때문에 입력란을 설정할 수없는 매우 이상한 상황이 있습니다. 되돌릴 수 없으며 앞으로 나아갈 수 없습니다.Tapestry의 대화 상자 확인
나는 확인을 누르면 확인 대화 상자가 열립니다. 그러나 여기 값은 아직 설정되지 않았으므로 (Confirm 대화 상자에서 Submit를 기다리고 있습니다) null 값과 0 값을 얻습니다.이 상황을 제거하는 방법을 제안 해 주시겠습니까? 또한 문제가되는 것은 대화 모드 일 때 확인 버튼을 클릭 할 수없고 그 이유가 무엇인지 알지 못합니다.
도움 주셔서 감사합니다.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package rs.domaci.pages;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.alerts.AlertManager;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.Form;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.hibernate.annotations.CommitAfter;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.services.ComponentSource;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
import org.hibernate.Session;
import rs.domaci.entities.Tiket;
import rs.domaci.entities.TiketStatus;
import rs.domaci.entities.TipDrawTiketa;
/**
* This page is for generating tickets!
*
* @author
*/
public class AddTickets {
@Property
private String drawNumberOfTicket;
@Inject
private Session hibernate;
@Property
private int series;
@Property
@Persist(PersistenceConstants.CLIENT)
private String datum;
@Inject
private ComponentSource componentSource;
@Property
// price
private int cijena;
@Property
@Persist
private String kopijaDatum;
@Property
@Persist
private int kopijaBroj;
/**
* @Property private
*/
@Property
@Persist(PersistenceConstants.CLIENT)
private int broj;
@Property
@Persist(PersistenceConstants.FLASH)
private int brojTiketa;
@Property
private TiketStatus status = TiketStatus.DISPONIBLE;
@InjectComponent
private Zone zonaDjelovanja;
@Inject
private Request request;
@Inject
private AjaxResponseRenderer ajaxResponseRenderer;
@Inject
private ComponentResources componentResources;
@Property
@Persist(PersistenceConstants.FLASH)
private TipDrawTiketa drawTip;
@Inject
private AlertManager manager;
@Component(id = "dodajTiket")
private Form form;
// Generally useful bits and pieces
void setupRender() {
datum = null;
updateDisplay(drawTip);
}
// public TipDrawTiketa getNAVIDENA() {
// brojTiketa = 20;
// return TipDrawTiketa.NAVIDENA;
// }
//
// public TipDrawTiketa getCHANCES() {
// brojTiketa = 10;
// return TipDrawTiketa.CHANCES;
// }
//
// public TipDrawTiketa getLOTERIANACIONAL() {
// brojTiketa = 20;
// return TipDrawTiketa.LOT_NAC;
// }
public String getFormatirajMe() {
String prviDio = String.format("%03d", series);
String drugiDio = String.format("%02d", broj);
return prviDio + drugiDio;
}
public Object getOsvjeziZonu() {
if (drawTip == drawTip.LOT_NAC) {
brojTiketa = 20;
return zonaDjelovanja.getBody();
} else if (drawTip == drawTip.CHANCES) {
brojTiketa = 10;
return zonaDjelovanja.getBody();
} else if (drawTip == drawTip.NAVIDENA) {
brojTiketa = 10;
return zonaDjelovanja.getBody();
} else {
brojTiketa = 10;
return zonaDjelovanja.getBody();
}
}
@OnEvent(value = EventConstants.VALUE_CHANGED, component = "drawTip")
public Object updateDisplay(TipDrawTiketa tipDrawTiketaa) {
drawTip = tipDrawTiketaa;
if (drawTip == TipDrawTiketa.LOT_NAC) {
brojTiketa = 20;
return zonaDjelovanja.getBody();
} else if (drawTip == TipDrawTiketa.CHANCES) {
brojTiketa = 10;
return zonaDjelovanja.getBody();
} else if (drawTip == TipDrawTiketa.NAVIDENA) {
brojTiketa = 20;
return zonaDjelovanja.getBody();
} else {
brojTiketa = 20;
return zonaDjelovanja.getBody();
}
}
/**
*
* @return
*/
@CommitAfter
@OnEvent(value = "submit", component = "dodajTiket")
void onDodajTiket() {
for (int i = 0; i < brojTiketa; i++) {
hibernate.save(new Tiket(StringUtils.leftPad(String.valueOf(series + "" + broj), 5, ""), datum, drawTip, String.format("%03d", series), String.format("%02d", broj), status, cijena));
}
String redom = "Created ticket sheet serial " + series + "\n" + " number " + broj;
//manager.alert(Duration.UNTIL_DISMISSED, Severity.INFO, redom);
componentResources.discardPersistentFieldChanges();
}
@Property
private JSONObject params;
@OnEvent(EventConstants.ACTIVATE)
public void onActivate() {
params = new JSONObject();
params.accumulate("modal", true);
}
}
이 이미지에
<t:layout t:pageTitle='${message:AddTickets}' xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<t:jquery.jgrowl />
<form t:type="form" t:id="dodajTiket">
<t:zone t:id="zonaDjelovanja" id="zonaDjelovanja">
<t:errors/>
<div class="palette palette-concrete" style="height:80%;">
<div class="col-xs-12" style="margin-left:17px;">
<h5>${message:selectTypeOfTicket}</h5>
<t:select t:id="drawTip" style="color:black;" validate="required" t:event="OsvjeziZonu" zone="zonaDjelovanja" />
</div>
<!-- fecha del sorteo -->
<div class="col-xs-12">
<div class="col-xs-3">
<t:label for="datum"><h6>${message:datum}</h6></t:label>
<t:datefield id="uzmiDatum" validate="required" class="form-control" t:id="datum"/>
</div>
<!-- no de fracciones -->
<div class="col-xs-3">
<div class="post-box"><label><h6>${message:numberOfTickets}</h6></label>
<input class="form-control" validate="required" t:type="TextField" t:id="brojTiketa" t:value="brojTiketa"/></div>
</div>
</div>
<div class="col-xs-12">
<div class="col-xs-3">
<div class="post-box"><label><h6>${message:number}</h6></label>
<input class="form-control" id="uzmiBroj" validate="required" t:type="TextField" t:id="broj"/></div>
</div>
<div class="col-xs-3">
<div class="post-box"><label><h6>${message:serial}</h6></label>
<input class="form-control" validate="required" t:type="TextField" t:id="series" t:value="series" /></div>
</div>
<div class="col-xs-3">
<div class="post-box"><label><h6>${message:price}</h6></label>
<input class="form-control" t:type="TextField" t:id="cijena" t:value="cijena"/></div>
</div>
</div>
<div class="col-xs-12">
<br></br>
<br></br>
<div class="col-xs-3">
<!--
<t:submit value="Confirmar" t:event="dodajTiket" class="form-control" t:height="300" t:message="¿Seguro que desea crear esta entrada? ${kopijaBroj}" t:mixins="confirm"/>
-->
<t:zone t:id="zonaUploadovanja" id="zonaDjelovanja">
<div t:type="jquery/dialog" t:zone="zonaDjelovanja" t:clientId="modal-example" class="k-modal" t:params="params">
<div class="content">
<p>¿Seguro que desea crear esta entrada?
</p>
${brojTiketa}
<!--
<script> document.getElementById('izmiBroj').value</script>-->
<p style="color:red; font-size: 25px;">6</p>
</div>
<t:submit t:event="OsvjeziZonu" value="Confirmar" class="form-control" />
</div>
</t:zone>
</div>
</div>
</div>
</t:zone>
</form>
<t:jquery.dialoglink t:dialog="modal-example" class="k-modal-trigger">Open</t:jquery.dialoglink>
</t:layout>
, 나는 영역 안에 필드 Cantidad 드 Fracciones에서 매개 변수를 사용하려고 한 페이지가로드 된 경우에만 작동합니다 cantidad de fracciones의 가치도 대화 내에서 변경 될 것입니다.하지만 AJAX 덕분이 아닙니다. 나는 Cantidad de Fracciones의 가치를 페이지로드에서 가져오고이 페이지에 머물러있을 때 변경할 수 없다고 생각합니다. 내가 원하는. 필드 Cantidad de Fracciones에서 입력을 변경하면 대화 상자 안의 Cantidad de Fracciones의 가치가 업데이트되기를 바랍니다.
은 UPDATE :
는 모든 클라이언트 쪽 일이 있기 때문에, 나는 랜스 자바 대답 제안 주어진 필드의 텍스트 변화에 듣는 JQuery와 접근 방식을 사용하는 선택했습니다.
<script>
$("input")
.keyup(function() {
var value = $(broj).val();
$("#provjeraBroj").text(value);
var value = $(datum).val();
$("#provjeraDatum").text(value);
//var value = $(drawTip).val();
$('#drawTip').change(function() {
var $selected = $(this).find('option:selected');
if ($selected.val() === 'LOT_NAC') {
$("#provjeraDrawTip").text("Loteri");
}
if ($selected.val() === 'CHANCES') {
$("#provjeraDrawTip").text("Chances");
}
else {
$("#provjeraDrawTip").text("Navideña");
}
}).change();
var value = $(series).val();
$("#provjeraSeries").text(value);
var value = $(brojTiketa).val();
$("#provjeraBrojTiketa").text(value);
})
.keyup();
</script>
"업데이트"는 실제로 2 차 답이되어야합니다. –