पर सर्वर साइड सत्यापन त्रुटि को प्रदर्शित करने के लिए कैसे करें क्योंकि मैं grails ढांचे पर काम कर रहा हूं लेकिन नियंत्रक का उपयोग नहीं कर रहा हूं। मेरा एप्लिकेशन "सिंगल पेज एप्लिकेशन" है। मैं अपने पेज को फिर से लोड नहीं करना चाहता, इसलिए मैंने सेवा लिखी है यानी पंजीकरण सेवा अजाक्स कॉलिंग के साथ। तो मैं डेटा बाध्यकारी के लिए knockout का उपयोग कर रहा हूँ। डेटाबेस का उपयोग postgresql है। मेरे पास एक व्यू पेज है जहां मेरे पास ईमेल फ़ील्ड है। जब मैं एक डुप्लिकेट ईमेल आईडी दर्ज कर रहा हूं और सहेजें बटन पर क्लिक कर रहा हूं तो मैं एक सत्यापन त्रुटि देख सकता हूं यानी "ईमेल पहले से ही लिया जा चुका है" लेकिन यहां तक कि अगर मैं एक अद्वितीय आईडी लिख रहा हूं तो मुझे भी वही सत्यापन त्रुटि मिल रही है। ऐसा इसलिए है क्योंकि यह modalModal.js पृष्ठ में त्रुटि स्थिति में जा रहा है, इसलिए मुझे इस समस्या को ठीक करने का तरीका नहीं मिल रहा है। मैं बस चाहता हूं कि जब मैं अद्वितीय आईडी दर्ज करता हूं और बटन सहेजें पर क्लिक करता हूं तो उसे सत्यापन त्रुटि नहीं दी जानी चाहिए।दृश्य पृष्ठ
_newCostingpage.gsp (my view page)
<div id="light" class="white_content" style="color: black;">
<form action="#/cart" method="post">
<input type="hidden" name="url" value="${grailsApplication.config.serverURL}"/>
<p><label>first name: <input name="firstName"
class="formElement" data-bind='value: firstName'/></label></p>
<p><label>last name: <input name="lastName"
class="formElement" data-bind='value: lastName' /></label></p>
<p><label>organisation: <input name="organisation" class="formElement" data-
bind='value: organisation' /></label></p>
<p><label>email:
<input name="email" class="formElement" data-bind='value: email' /></label><label
id="errorDiv"></label></p>
<p><label>password: <input type="password" name="password"
class="formElement" data-bind='value: password' /></label></p>
<p><label style="margin-left: -37px;">confirm password:</label> <input
type="password" name="confirmPassword" class="formElement" data-bind='value:
confirmPassword' /></p>
<p><input type="submit" value="register"/></p>
</form>
<a href="javascript:void(0)"onclick="document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none';clearBox();">Close</a>
</div>
<div id="fade" class="black_overlay"></div>
</div>
Domain class :-\
class Registration {
String firstName
String lastName
String organization
String email
String password
String confirmPassword
static constraints = {
firstName(nullable:false)
lastName(nullable:true)
organization(blank:false)
email(nullable:false,email:true,unique:true)
password(blank:false)
confirmPassword(blank:false)
}
}
modalModal.js
var ratPack = $.sammy(function() {
this.post('#/cart', function() {
var firstname = this.params['firstName'];
var lastName = this.params['lastName'];
var organisation = this.params['organisation'];
var email = this.params['email'];
var password = this.params['password'];
var confirmPassword = this.params['confirmPassword'];
var baseurl = this.params['url'];
$.ajax({
type : 'POST',
url :'http://localhost:9191/guido-rest-
resource/api/registration/'+firstname+'/'+lastName+'/'+email,
success : function() {
alert("success:");
},
error:function(){
$('#errorDiv').text("Email has already been taken");
}
});
});
});
$(function() {
ratPack.run();
});
function clearBox(){
$('.formElement').val("");
}
RegistrationResource.groovy
package common.rest.resourcepl
import static org.grails.jaxrs.response.Responses.*
import javax.ws.rs.Consumes
import javax.ws.rs.GET
import javax.ws.rs.Produces
import javax.ws.rs.Path
import javax.ws.rs.PathParam
import javax.ws.rs.POST
import javax.ws.rs.core.Response
import common.servicepl.RegistrationService
@Path('/api/registration')
class RegistrationResource {
@GET
@Produces('text/plain')
String getRegistrationRepresentation() {
'Registration'
}
def registrationService;
@POST
@Path('/{firstname}/{lastName}/{email}')
Response create(@PathParam('firstname') String firstname,
@PathParam('lastName') String lastName,
@PathParam('email') String email) {
return
RegistrationService().createRegistration(firstname,lastName,email);
}
}
RegistrationService.groovy
package common.servicepl
import common.persistencepl.Registration
class RegistrationService {
def createRegistration(String firstName,String lastName,String email) {
println "Inside Registration Service"
def reg = new Registration();
reg.firstName = firstName;
reg.lastName = lastName;
reg.password = "asdf";
reg.confirmPassword = "asdf";
reg.email = email;
reg.organization = "fasdf";
if(reg.save([flush:true])){
return true
}
else
{
return false
}
}
}
जब आप अपने एक ही आवेदन से एक सेवा को कॉल, 'http की तरह पूरा पथ speficy नहीं है: // स्थानीय होस्ट .. ।, इसे अपने वर्तमान पृष्ठ '/ api/पंजीकरण के सापेक्ष निर्दिष्ट करें ...' – BuddhiP