You need to manually set the LossFunction option in NetTrain; by default when the final layer is a SoftmaxLayer, the CrossEntropyLossLayer["Index"] is used, which is why you are getting the errors about not having integer outputs.
You want to set: `
NetTrain[net, trainingData, LossFunction->CrossEntropyLossLayer["Probabilities"]]
Explore the CrossEntropyLossLayer documentation for more details.