Los errores se muestran a la vez, arreglado mensaje de error de tiempo

This commit is contained in:
abemorcardc 2021-04-03 18:59:50 +02:00
parent 15fc6453f8
commit ee03a94228
7 changed files with 94 additions and 77 deletions

View file

@ -55,7 +55,7 @@ public class FoodOfferController {
private boolean checkDates(final FoodOffer foodOffer) { private boolean checkDates(final FoodOffer foodOffer) {
boolean res = false; boolean res = false;
if(foodOffer.getEnd().isAfter(foodOffer.getStart())) { if(foodOffer.getEnd()==null || foodOffer.getStart()==null || foodOffer.getEnd().isAfter(foodOffer.getStart())) {
res = true; res = true;
} }
return res; return res;
@ -70,19 +70,20 @@ public class FoodOfferController {
@PostMapping("/offers/food/new") @PostMapping("/offers/food/new")
public String processCreationForm(@Valid FoodOffer foodOffer, BindingResult result) { public String processCreationForm(@Valid FoodOffer foodOffer, BindingResult result) {
if (result.hasErrors()) {
return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(foodOffer)) { if(!this.checkDates(foodOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
} }
if (result.hasErrors()) {
return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
}
Client client = this.clientService.getCurrentClient(); Client client = this.clientService.getCurrentClient();
foodOffer.setClient(client); foodOffer.setClient(client);
foodOffer.setStatus(StatusOffer.hidden); foodOffer.setStatus(StatusOffer.hidden);
this.foodOfferService.saveFoodOffer(foodOffer); this.foodOfferService.saveFoodOffer(foodOffer);
return "redirect:/offers/food/" + foodOffer.getId(); return "redirect:/offers/food/" + foodOffer.getId();
}
} }
@GetMapping(value = "/offers/food/{foodOfferId}/activate") @GetMapping(value = "/offers/food/{foodOfferId}/activate")
@ -141,21 +142,22 @@ public class FoodOfferController {
if (!this.checkOffer(foodOffer, foodOfferEdit)) { if (!this.checkOffer(foodOffer, foodOfferEdit)) {
return "error"; return "error";
} }
if (result.hasErrors()) {
model.addAttribute("foodOffer", foodOfferEdit);
return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(foodOfferEdit)) { if(!this.checkDates(foodOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
}
if (result.hasErrors()) {
model.addAttribute("foodOffer", foodOfferEdit);
return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
} }
BeanUtils.copyProperties(this.foodOfferService.findFoodOfferById(foodOfferEdit.getId()), foodOfferEdit, BeanUtils.copyProperties(this.foodOfferService.findFoodOfferById(foodOfferEdit.getId()), foodOfferEdit,
"start", "end", "food", "discount"); "start", "end", "food", "discount");
this.foodOfferService.saveFoodOffer(foodOfferEdit); this.foodOfferService.saveFoodOffer(foodOfferEdit);
return "redirect:/offers/food/" + foodOfferEdit.getId(); return "redirect:/offers/food/" + foodOfferEdit.getId();
}
} }
@GetMapping(value = "/offers/food/{foodOfferId}/disable") @GetMapping(value = "/offers/food/{foodOfferId}/disable")

View file

@ -7,12 +7,10 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import org.springframework.cheapy.model.NuOffer;
import org.springframework.cheapy.model.SpeedOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.cheapy.model.Client; import org.springframework.cheapy.model.Client;
import org.springframework.cheapy.model.FoodOffer; import org.springframework.cheapy.model.NuOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.service.ClientService; import org.springframework.cheapy.service.ClientService;
import org.springframework.cheapy.service.NuOfferService; import org.springframework.cheapy.service.NuOfferService;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -57,15 +55,17 @@ public class NuOfferController {
private boolean checkDates(final NuOffer nuOffer) { private boolean checkDates(final NuOffer nuOffer) {
boolean res = false; boolean res = false;
if(nuOffer.getEnd().isAfter(nuOffer.getStart())) { if(nuOffer.getEnd()==null || nuOffer.getStart()==null || nuOffer.getEnd().isAfter(nuOffer.getStart())) {
res = true; res = true;
} }
return res; return res;
} }
private boolean checkConditions(final NuOffer NuOffer) { private boolean checkConditions(final NuOffer nuOffer) {
boolean res = false; boolean res = false;
if(NuOffer.getGold() >= NuOffer.getSilver() && NuOffer.getSilver() >= NuOffer.getBronze()) { if(nuOffer.getGold()==null || nuOffer.getSilver()==null || nuOffer.getBronze()==null) {
}else if(nuOffer.getGold() >= nuOffer.getSilver() && nuOffer.getSilver() >= nuOffer.getBronze()) {
res = true; res = true;
} }
return res; return res;
@ -73,7 +73,8 @@ public class NuOfferController {
private boolean checkDiscounts(final NuOffer NuOffer) { private boolean checkDiscounts(final NuOffer NuOffer) {
boolean res = false; boolean res = false;
if(NuOffer.getDiscountGold() >= NuOffer.getDiscountSilver() && NuOffer.getDiscountSilver() >= NuOffer.getDiscountBronze()) { if(NuOffer.getDiscountGold()==null || NuOffer.getDiscountSilver()==null || NuOffer.getDiscountBronze()==null) {
}else if(NuOffer.getDiscountGold() >= NuOffer.getDiscountSilver() && NuOffer.getDiscountSilver() >= NuOffer.getDiscountBronze()) {
res = true; res = true;
} }
return res; return res;
@ -88,21 +89,23 @@ public class NuOfferController {
@PostMapping("/offers/nu/new") @PostMapping("/offers/nu/new")
public String processCreationForm(@Valid NuOffer nuOffer, BindingResult result) { public String processCreationForm(@Valid NuOffer nuOffer, BindingResult result) {
if (result.hasErrors()) {
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(nuOffer)) { if(!this.checkDates(nuOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkConditions(nuOffer)) { if(!this.checkConditions(nuOffer)) {
result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce"); result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce");
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkDiscounts(nuOffer)) { if(!this.checkDiscounts(nuOffer)) {
result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce"); result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce");
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} }
if (result.hasErrors()) {
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
}
nuOffer.setStatus(StatusOffer.hidden); nuOffer.setStatus(StatusOffer.hidden);
Client client = this.clientService.getCurrentClient(); Client client = this.clientService.getCurrentClient();
@ -111,7 +114,7 @@ public class NuOfferController {
this.nuOfferService.saveNuOffer(nuOffer); this.nuOfferService.saveNuOffer(nuOffer);
return "redirect:/offers/nu/" + nuOffer.getId(); return "redirect:/offers/nu/" + nuOffer.getId();
}
} }
@GetMapping(value = "/offers/nu/{nuOfferId}/activate") @GetMapping(value = "/offers/nu/{nuOfferId}/activate")
@ -169,28 +172,30 @@ public class NuOfferController {
return "error"; return "error";
} }
if (result.hasErrors()) {
model.addAttribute("nuOffer", nuOfferEdit);
return NuOfferController.VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(nuOfferEdit)) { if(!this.checkDates(nuOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkConditions(nuOfferEdit)) { if(!this.checkConditions(nuOfferEdit)) {
result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce"); result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce");
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkDiscounts(nuOfferEdit)) { if(!this.checkDiscounts(nuOfferEdit)) {
result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce"); result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce");
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
} }
if (result.hasErrors()) {
model.addAttribute("nuOffer", nuOfferEdit);
return NuOfferController.VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
}
BeanUtils.copyProperties(this.nuOfferService.findNuOfferById(nuOfferEdit.getId()), nuOfferEdit, "start", BeanUtils.copyProperties(this.nuOfferService.findNuOfferById(nuOfferEdit.getId()), nuOfferEdit, "start",
"end", "gold", "discount_gold", "silver", "discount_silver", "bronze", "discount_bronze"); "end", "gold", "discount_gold", "silver", "discount_silver", "bronze", "discount_bronze");
this.nuOfferService.saveNuOffer(nuOfferEdit); this.nuOfferService.saveNuOffer(nuOfferEdit);
return "redirect:/offers/nu/" + nuOfferEdit.getId(); return "redirect:/offers/nu/" + nuOfferEdit.getId();
}
} }
@GetMapping(value = "/offers/nu/{nuOfferId}/disable") @GetMapping(value = "/offers/nu/{nuOfferId}/disable")

View file

@ -54,7 +54,7 @@ public class SpeedOfferController {
private boolean checkDates(final SpeedOffer speedOffer) { private boolean checkDates(final SpeedOffer speedOffer) {
boolean res = false; boolean res = false;
if(speedOffer.getEnd().isAfter(speedOffer.getStart())) { if(speedOffer.getEnd()==null || speedOffer.getStart()==null || speedOffer.getEnd().isAfter(speedOffer.getStart())) {
res = true; res = true;
} }
return res; return res;
@ -62,7 +62,9 @@ public class SpeedOfferController {
private boolean checkConditions(final SpeedOffer speedOffer) { private boolean checkConditions(final SpeedOffer speedOffer) {
boolean res = false; boolean res = false;
if(speedOffer.getGold() <= speedOffer.getSilver() && speedOffer.getSilver() <= speedOffer.getBronze()) { if(speedOffer.getGold()==null || speedOffer.getSilver()==null || speedOffer.getBronze()==null) {
}else if(speedOffer.getGold() <= speedOffer.getSilver() && speedOffer.getSilver() <= speedOffer.getBronze()) {
res = true; res = true;
} }
return res; return res;
@ -70,7 +72,8 @@ public class SpeedOfferController {
private boolean checkDiscounts(final SpeedOffer speedOffer) { private boolean checkDiscounts(final SpeedOffer speedOffer) {
boolean res = false; boolean res = false;
if(speedOffer.getDiscountGold() >= speedOffer.getDiscountSilver() && speedOffer.getDiscountSilver() >= speedOffer.getDiscountBronze()) { if(speedOffer.getDiscountGold()==null || speedOffer.getDiscountSilver()==null || speedOffer.getDiscountBronze()==null) {
}else if(speedOffer.getDiscountGold() >= speedOffer.getDiscountSilver() && speedOffer.getDiscountSilver() >= speedOffer.getDiscountBronze()) {
res = true; res = true;
} }
return res; return res;
@ -85,27 +88,30 @@ public class SpeedOfferController {
@PostMapping("/offers/speed/new") @PostMapping("/offers/speed/new")
public String processCreationForm(@Valid SpeedOffer speedOffer, BindingResult result) { public String processCreationForm(@Valid SpeedOffer speedOffer, BindingResult result) {
if (result.hasErrors()) {
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(speedOffer)) { if(!this.checkDates(speedOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkConditions(speedOffer)) { if(!this.checkConditions(speedOffer)) {
result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce"); result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce");
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkDiscounts(speedOffer)) { if(!this.checkDiscounts(speedOffer)) {
result.rejectValue("discountGold","" ,"El descuento de Oro debe ser menor o igual que el de plata, y el de plata menor o igual que el de bronce"); result.rejectValue("discountGold","" ,"El descuento de Oro debe ser menor o igual que el de plata, y el de plata menor o igual que el de bronce");
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} }
if (result.hasErrors()) {
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
}
Client client = this.clientService.getCurrentClient(); Client client = this.clientService.getCurrentClient();
speedOffer.setClient(client); speedOffer.setClient(client);
speedOffer.setStatus(StatusOffer.hidden); speedOffer.setStatus(StatusOffer.hidden);
this.speedOfferService.saveSpeedOffer(speedOffer); this.speedOfferService.saveSpeedOffer(speedOffer);
return "redirect:/offers/speed/" + speedOffer.getId(); return "redirect:/offers/speed/" + speedOffer.getId();
}
} }
@GetMapping(value = "/offers/speed/{speedOfferId}/activate") @GetMapping(value = "/offers/speed/{speedOfferId}/activate")
@ -161,28 +167,29 @@ public class SpeedOfferController {
return "error"; return "error";
} }
if (result.hasErrors()) {
model.addAttribute("speedOffer", speedOfferEdit);
return SpeedOfferController.VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(speedOfferEdit)) { if(!this.checkDates(speedOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkConditions(speedOfferEdit)) { if(!this.checkConditions(speedOfferEdit)) {
result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce"); result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce");
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkDiscounts(speedOfferEdit)) { if(!this.checkDiscounts(speedOfferEdit)) {
result.rejectValue("discountGold","" ,"El descuento de Oro debe ser menor o igual que el de plata, y el de plata menor o igual que el de bronce"); result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce");
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
} }
if (result.hasErrors()) {
model.addAttribute("speedOffer", speedOfferEdit);
return SpeedOfferController.VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
}
BeanUtils.copyProperties(this.speedOfferService.findSpeedOfferById(speedOfferEdit.getId()), speedOfferEdit, BeanUtils.copyProperties(this.speedOfferService.findSpeedOfferById(speedOfferEdit.getId()), speedOfferEdit,
"start", "end", "gold", "discount_gold", "silver", "discount_silver", "bronze", "discount_bronze"); "start", "end", "gold", "discount_gold", "silver", "discount_silver", "bronze", "discount_bronze");
this.speedOfferService.saveSpeedOffer(speedOfferEdit); this.speedOfferService.saveSpeedOffer(speedOfferEdit);
return "redirect:/offers/speed/" + speedOfferEdit.getId(); return "redirect:/offers/speed/" + speedOfferEdit.getId();
}
} }

View file

@ -8,7 +8,6 @@ import javax.validation.Valid;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.cheapy.model.Client; import org.springframework.cheapy.model.Client;
import org.springframework.cheapy.model.FoodOffer;
import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.model.TimeOffer; import org.springframework.cheapy.model.TimeOffer;
import org.springframework.cheapy.service.ClientService; import org.springframework.cheapy.service.ClientService;
@ -54,7 +53,7 @@ public class TimeOfferController {
private boolean checkDates(final TimeOffer timeOffer) { private boolean checkDates(final TimeOffer timeOffer) {
boolean res = false; boolean res = false;
if(timeOffer.getEnd().isAfter(timeOffer.getStart())) { if(timeOffer.getEnd()==null || timeOffer.getStart()==null || timeOffer.getEnd().isAfter(timeOffer.getStart())) {
res = true; res = true;
} }
return res; return res;
@ -62,7 +61,7 @@ public class TimeOfferController {
private boolean checkTimes(final TimeOffer timeOffer) { private boolean checkTimes(final TimeOffer timeOffer) {
boolean res = false; boolean res = false;
if(timeOffer.getFinish().isAfter(timeOffer.getInit())) { if(timeOffer.getFinish()==null || timeOffer.getInit()==null || timeOffer.getFinish().isAfter(timeOffer.getInit())) {
res = true; res = true;
} }
return res; return res;
@ -77,19 +76,21 @@ public class TimeOfferController {
@PostMapping("/offers/time/new") @PostMapping("/offers/time/new")
public String processCreationForm(@Valid TimeOffer timeOffer, BindingResult result) { public String processCreationForm(@Valid TimeOffer timeOffer, BindingResult result) {
if (result.hasErrors()) {
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(timeOffer)) { if(!this.checkDates(timeOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkTimes(timeOffer)) { if(!this.checkTimes(timeOffer)) {
result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio"); result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio");
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
} }
if (result.hasErrors()) {
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
}
timeOffer.setStatus(StatusOffer.hidden); timeOffer.setStatus(StatusOffer.hidden);
Client client = this.clientService.getCurrentClient(); Client client = this.clientService.getCurrentClient();
@ -98,7 +99,7 @@ public class TimeOfferController {
this.timeOfferService.saveTimeOffer(timeOffer); this.timeOfferService.saveTimeOffer(timeOffer);
return "redirect:/offers/time/" + timeOffer.getId(); return "redirect:/offers/time/" + timeOffer.getId();
}
} }
@GetMapping(value = "/offers/time/{timeOfferId}/activate") @GetMapping(value = "/offers/time/{timeOfferId}/activate")
@ -160,24 +161,26 @@ public class TimeOfferController {
return "error"; return "error";
} }
if (result.hasErrors()) {
model.addAttribute("timeOffer", timeOfferEdit);
return TimeOfferController.VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
} else {
if(!this.checkDates(timeOfferEdit)) { if(!this.checkDates(timeOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
} }
if(!this.checkTimes(timeOfferEdit)) { if(!this.checkTimes(timeOfferEdit)) {
result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio"); result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio");
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
} }
if (result.hasErrors()) {
model.addAttribute("timeOffer", timeOfferEdit);
return TimeOfferController.VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
}
BeanUtils.copyProperties(this.timeOfferService.findTimeOfferById(timeOfferEdit.getId()), timeOfferEdit, BeanUtils.copyProperties(this.timeOfferService.findTimeOfferById(timeOfferEdit.getId()), timeOfferEdit,
"start", "end", "init", "finish", "discount"); "start", "end", "init", "finish", "discount");
this.timeOfferService.saveTimeOffer(timeOfferEdit); this.timeOfferService.saveTimeOffer(timeOfferEdit);
return "redirect:/offers/time/" + timeOfferEdit.getId(); return "redirect:/offers/time/" + timeOfferEdit.getId();
}
} }

View file

@ -47,4 +47,4 @@ createNuOffers= Crear ofertas por número de comensales
createSpeedOffers= Crear ofertas por rapidez comiendo createSpeedOffers= Crear ofertas por rapidez comiendo
createTimeOffers= Crear ofertas por franja horaria createTimeOffers= Crear ofertas por franja horaria
init= Inicio del intervalo init= Inicio del intervalo
finish= Fin del intervalo finishOffer= Fin del intervalo

View file

@ -165,7 +165,7 @@
<th><fmt:message key="startDate"/></th> <th><fmt:message key="startDate"/></th>
<th><fmt:message key="endDate"/></th> <th><fmt:message key="endDate"/></th>
<th><fmt:message key="init"/></th> <th><fmt:message key="init"/></th>
<th><fmt:message key="finish"/></th> <th><fmt:message key="finishOffer"/></th>
<th> </th> <th> </th>
</tr> </tr>
</thead> </thead>

View file

@ -27,7 +27,7 @@
<td><c:out value="${timeOffer.init}h"/></td> <td><c:out value="${timeOffer.init}h"/></td>
</tr> </tr>
<tr> <tr>
<th><fmt:message key="finish"/></th> <th><fmt:message key="finishOffer"/></th>
<td><c:out value="${timeOffer.finish}h"/></td> <td><c:out value="${timeOffer.finish}h"/></td>
</tr> </tr>
<tr> <tr>