Отправка формы на «Enter» с помощью jQuery?

Сериализация объектов использует интерфейсы Serializable и Externalizable. Объект Java является сериализуемым. если класс или любой из его суперклассов реализует либо интерфейс java.io.Serializable, либо его подчиненный интерфейс, java.io.Externalizable. Большая часть класса java является сериализуемым .

  • NotSerializableException : packageName.ClassName «Чтобы принять участие в Объект класса в процессе сериализации. Класс должен реализовывать интерфейс Serializable или Externalizable.


Последовательный интерфейс

Сериализация объекта создает поток с информацией о классах Java для сохраняемых объектов. Для сериализуемых объектов сохраняется достаточная информация для восстановления этих объектов, даже если присутствует другая (но совместимая) версия реализации класса. Интерфейс Serializable определен для идентификации классов, которые реализуют сериализуемый протокол:

package java.io;

public interface Serializable {};
  • Интерфейс сериализации не имеет методов или полей и служит только для идентификации семантики сериализации. Для сериализации / десериализации класса мы можем использовать методы writeObject по умолчанию и методы readObject (или), мы можем переопределять методы writeObject и readObject из класса.
  • JVM будет иметь полный контроль над сериализацией объекта. используйте ключевое слово переходного процесса , чтобы предотвратить сериализацию члена данных.
  • Здесь сериализуемые объекты восстанавливаются непосредственно из потока без выполнения
  • InvalidClassException «В процессе десериализации, если значение локального класса serialVersionUID отличается от соответствующего класса отправителя. то результат конфликтует как java.io.InvalidClassException: com.github.objects.User; local class incompatible: stream classdesc serialVersionUID = 5081877, local class serialVersionUID = 50818771
  • Значения непереходных и нестатических полей класса становятся сериализованными.

Интерфейс внешнего управления

Для объектов Externalizable в контейнере сохраняется только идентификатор класса объекта; класс должен сохранять и восстанавливать содержимое. Интерфейс Externalizable определяется следующим образом:

package java.io;

public interface Externalizable extends Serializable
{
    public void writeExternal(ObjectOutput out)
        throws IOException;

    public void readExternal(ObjectInput in)
        throws IOException, java.lang.ClassNotFoundException;
}
  • Интерфейс Externalizable имеет два метода: внешний объект должен реализовывать методы writeExternal и readExternal для сохранения / восстановления состояния объекта.
  • Программист должен заботиться о том, какие объекты должны быть сериализованы. Как программист позаботится о сериализации Итак, ключевое слово transient не будет ограничивать какой-либо объект в процессе Serialization.
  • Когда объект Externalizable восстанавливается, экземпляр создается с использованием конструктора public no-arg, затем readExternal вызванный метод. Сериализуемые объекты восстанавливаются путем чтения их из ObjectInputStream.
  • OptionalDataException «Поля ДОЛЖНЫ БЫТЬ В ОДНОМ ЗАКАЗЕ И ТИПЕ , как мы их написали вне. Если в потоке есть какое-то несоответствие типа, это генерирует Необязательное исключение DataDataException.
    @Override public void writeExternal(ObjectOutput out) throws IOException {
        out.writeInt( id );
        out.writeUTF( role );
        out.writeObject(address);
    }
    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        this.id = in.readInt();
        this.address = (Address) in.readObject();
        this.role = in.readUTF();
    }
    
  • Поля экземпляра класса, который написал (выставлен) на ObjectOutput, сериализуются.

Пример «Реализует Serializable

class Role {
    String role;
}
class User extends Role implements Serializable {

    private static final long serialVersionUID = 5081877L;
    Integer id;
    Address address;

    public User() {
        System.out.println("Default Constructor get executed.");
    }
    public User( String role ) {
        this.role = role;
        System.out.println("Parametarised Constructor.");
    }
}

class Address implements Serializable {

    private static final long serialVersionUID = 5081877L;
    String country;
}

Пример « реализует Externalizable

class User extends Role implements Externalizable {

    Integer id;
    Address address;
    // mandatory public no-arg constructor
    public User() {
        System.out.println("Default Constructor get executed.");
    }
    public User( String role ) {
        this.role = role;
        System.out.println("Parametarised Constructor.");
    }

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeInt( id );
        out.writeUTF( role );
        out.writeObject(address);
    }
    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        this.id = in.readInt();
        this.address = (Address) in.readObject();
        this.role = in.readUTF();
    }
}

Пример

public class CustomClass_Serialization {
    static String serFilename = "D:/serializable_CustomClass.ser";

    public static void main(String[] args) throws IOException {
        Address add = new Address();
        add.country = "IND";

        User obj = new User("SE");
        obj.id = 7;
        obj.address = add;

        // Serialization
        objects_serialize(obj, serFilename);
        objects_deserialize(obj, serFilename);

        // Externalization
        objects_WriteRead_External(obj, serFilename);
    }

    public static void objects_serialize( User obj, String serFilename ) throws IOException{
        FileOutputStream fos = new FileOutputStream( new File( serFilename ) );
        ObjectOutputStream objectOut = new ObjectOutputStream( fos );

        // java.io.NotSerializableException: com.github.objects.Address
        objectOut.writeObject( obj );
        objectOut.flush();
        objectOut.close();
        fos.close();

        System.out.println("Data Stored in to a file");
    }
    public static void objects_deserialize( User obj, String serFilename ) throws IOException{
        try {
            FileInputStream fis = new FileInputStream( new File( serFilename ) );
            ObjectInputStream ois = new ObjectInputStream( fis );
            Object readObject;
            readObject = ois.readObject();
            String calssName = readObject.getClass().getName();
            System.out.println("Restoring Class Name : "+ calssName); // InvalidClassException

            User user = (User) readObject;
            System.out.format("Obj[Id:%d, Role:%s] \n", user.id, user.role);

            Address add = (Address) user.address;
            System.out.println("Inner Obj : "+ add.country );
            ois.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static void objects_WriteRead_External( User obj, String serFilename ) throws IOException {
        FileOutputStream fos = new FileOutputStream(new File( serFilename ));
        ObjectOutputStream objectOut = new ObjectOutputStream( fos );

        obj.writeExternal( objectOut );
        objectOut.flush();

        fos.close();

        System.out.println("Data Stored in to a file");

        try {
            // create a new instance and read the assign the contents from stream.
            User user = new User();

            FileInputStream fis = new FileInputStream(new File( serFilename ));
            ObjectInputStream ois = new ObjectInputStream( fis );

            user.readExternal(ois);

            System.out.format("Obj[Id:%d, Role:%s] \n", user.id, user.role);

            Address add = (Address) user.address;
            System.out.println("Inner Obj : "+ add.country );
            ois.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

@see

417
задан default locale 28 July 2014 в 10:21
поделиться

6 ответов

Также для поддержания доступности необходимо использовать это для определения кода клавиши:

c = e.which ? e.which : e.keyCode;

if (c == 13) ...
4
ответ дан 22 November 2019 в 23:24
поделиться

Есть ли какая-либо причина, которую необходимо сцепить и протестировать на клавишу Enter?

Не могли Вы просто добавлять a

<input type="submit" /> 

к Вашей форме и это имеет естественно быть отправленным, когда входят, продвинут? Вы могли даже затем сцепить форму onsubmit действие и вызывает функцию проверки оттуда, если Вы хотели...

Вы могли даже использовать onsubmit как тест, чтобы видеть, отправляется ли Ваша форма, но она не будет работать, если Вы звоните form.submit().

30
ответ дан 22 November 2019 в 23:24
поделиться

Вернуть false препятствовать тому, чтобы нажатие клавиши продолжилось.

61
ответ дан 22 November 2019 в 23:24
поделиться

Не знайте, поможет ли это, но можно попытаться моделировать щелчок кнопки отправки, вместо того, чтобы непосредственно отправить форму. У меня есть следующий код в производстве, и это хорошо работает:

    $('.input').keypress(function(e) {
        if(e.which == 13) {
            jQuery(this).blur();
            jQuery('#submit').focus().click();
        }
    });

Примечание: jQuery ('#submit') .focus () делает кнопку анимационной, когда входят, нажимается.

79
ответ дан 22 November 2019 в 23:24
поделиться

Кроме того, для возвращения false, поскольку Jason Cohen упомянул. Вы можете иметь к также preventDefault

e.preventDefault();
172
ответ дан 22 November 2019 в 23:24
поделиться

Я использую сейчас

$("form").submit(function(event)

Сначала я добавил обработчик событий к кнопке отправки, что вызвало у меня ошибку.

2
ответ дан 22 November 2019 в 23:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: